XPath 3.1 解析器
项目描述
使用 Pyparsing 解析 XPATH 3.1
XPath(XML 路径语言)是一种用于从 XML 文档中选择节点的查询语言。此外,XPath 用于从 XML 文档的内容计算值(例如,字符串、数字或布尔值)。XPath 由万维网联盟 (W3C) 维护。
Pyparsing是一个用于在 Python 中构造语法的解析模块。XPyth-parser 使用 Pyparsing 来解析 XPath 字符串,并提供了一个额外的抽象层。
地位
这个库试图创建一个解析器,它既可以用于查询 XML 文档,也可以用于计算任务。最初的计划是支持这两种选择。然而,XPath 3.1 并没有被广泛使用,所以用例很少。仍应支持在语法级别解析 XPath 3.1,但在使用抽象层时并非所有信息都可用。最重要的是,将缺少XPath 函数。
处理动态上下文(即,现在将使用 LXML 将 XML 解析为 Parser.xml)。在某种程度上,XPyth-parser 目前是一个精美的 LXML 包装器,以支持一些 XPath 2.0+ 功能。
备择方案
对于大多数用例,这个项目会有(更好的)替代方案。LXML是 C 库 libxml2 和 libxslt 的 Pythonic 绑定。如果只需要 XPath 1.0,LXML 将是更好的解决方案。
要求
xpyth-parser 依赖于 LXML、PyParsing。对于解析日期,我们使用 Isodate。
目标
这个项目开始时有一个特定的目标:解析XBRL 公式测试。这些测试严重依赖于XBRL 特定的 XPath 2.0 函数。正因为如此,这个库的作者正专注于正确解释这些函数。
例子
from xpyth_parser.parse import Parser
count = Parser("count(1,2,3)").run()
print(count) -> 3
这将给出一个包装类,其中包含 count.XPath 中的解析语法树和 count.resolved_answer 中的答案
仅解析
也可以只解析字符串,不尝试解析静态和动态上下文
count = Parser("count(1,2,3), no_resolve=True")
count.xpath将是完整的语法树,而不是处理函数和应用上下文。
count.run()将像 no_resolve=False 一样解析表达式。可能需要事先将上下文传递给对象。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
xpyth_parser -0.0.10.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 797f1680a9a7dc9fc49cba8577652f5cdd9f1f735f33a684f70f4e1b303abc39 |
|
| MD5 | cdc4f4655d5c1f6285d99f712e250be1 |
|
| 布莱克2-256 | bbcdb9a769a1b37ad85750ed097b909818bfe838d83fb7f64c922f9af206a12b |
xpyth_parser -0.0.10-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 51cf8fd307ae42af2b3b3a19acfb05a6da8cf90ede8f303f6d8196c154d511b0 |
|
| MD5 | 3e67d986828c2107a0dfc25492949d71 |
|
| 布莱克2-256 | fc6cd04d5776c310803298e6594460823e98d263f059b23b0de755de76f38a3d |