Skip to main content

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 (23.8 kB 查看哈希)

已上传 source

内置分布

xpyth_parser-0.0.10-py3-none-any.whl (25.9 kB 查看哈希)

已上传 py3