Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 包含调试信息的XML解析器_Python_Xml_Xml Parsing - Fatal编程技术网

Python 包含调试信息的XML解析器

Python 包含调试信息的XML解析器,python,xml,xml-parsing,Python,Xml,Xml Parsing,我正在寻找一个用于python的XML解析器,它在每个节点中包含一些调试信息,例如节点开始的行号和列。理想情况下,它将是一个与xml.etree.ElementTree.XMLParser兼容的解析器,即我可以传递给xml.etree.ElementTree.parse的解析器 我知道这些解析器实际上不会生成元素,所以我不确定这到底是如何工作的,但这似乎是一件非常有用的事情,如果没有人拥有它,我会感到惊讶。XML中的语法错误是一回事,但如果不能指向源文件/字符串中的特定位置,则结果结构中的语义错

我正在寻找一个用于python的XML解析器,它在每个节点中包含一些调试信息,例如节点开始的行号和列。理想情况下,它将是一个与
xml.etree.ElementTree.XMLParser
兼容的解析器,即我可以传递给
xml.etree.ElementTree.parse
的解析器

我知道这些解析器实际上不会生成元素,所以我不确定这到底是如何工作的,但这似乎是一件非常有用的事情,如果没有人拥有它,我会感到惊讶。XML中的语法错误是一回事,但如果不能指向源文件/字符串中的特定位置,则结果结构中的语义错误可能很难调试。

通过xpath指向元素(lxml-
getpath
lxml
提供了为文档中的元素查找xpath的功能

具有测试文件:

>>> from lxml import etree
>>> xmlstr = """<root><rec id="01"><subrec>a</subrec><subrec>b</subrec></rec>
... <rec id="02"><para>graph</para></rec>
... </root>"""
...
>>> doc = etree.fromstring(xmlstr)
>>> doc
<Element root at 0x7f61040fd5f0>
>>> root = doc.getroottree()
>>> root
<lxml.etree._ElementTree at 0x7f610410f758>
>>> root = doc.getroottree()
>>> root
<lxml.etree._ElementTree at 0x7f610410f758>
>>> root.getpath(para)
'/root/rec[2]/para'