Python 包含调试信息的XML解析器
我正在寻找一个用于python的XML解析器,它在每个节点中包含一些调试信息,例如节点开始的行号和列。理想情况下,它将是一个与Python 包含调试信息的XML解析器,python,xml,xml-parsing,Python,Xml,Xml Parsing,我正在寻找一个用于python的XML解析器,它在每个节点中包含一些调试信息,例如节点开始的行号和列。理想情况下,它将是一个与xml.etree.ElementTree.XMLParser兼容的解析器,即我可以传递给xml.etree.ElementTree.parse的解析器 我知道这些解析器实际上不会生成元素,所以我不确定这到底是如何工作的,但这似乎是一件非常有用的事情,如果没有人拥有它,我会感到惊讶。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'