我经常处理相当复杂的文档,我实际上是逆向工程。我需要编写代码来修改某些节点的值,并使用遍历的路径到达充当条件的节点。
在检查XML数据以理解它的结构时,对此路径进行表示非常有用。然后,我可以使用代码中的路径到达该特定节点。
例如,我可以获得表示目录>书>教科书>作者来自以下文件。
Python中是否有允许我这样做的库?
<xml>
<Catalog>
<Book>
<Textbook>
<Author ="James" />
</Textbook>
</Book>
<Journal>
<Science>
<Author ="James" />
</Science>
</Journal>
</Catalog>
</xml>
答案 0 :(得分:2)
lxml库有一个etree.Element.getpath方法(在前一个链接中搜索Generating XPath expressions
)“返回一个结构的绝对XPath表达式来查找该元素”。以下是lxml库文档中的示例:
>>> a = etree.Element("a")
>>> b = etree.SubElement(a, "b")
>>> c = etree.SubElement(a, "c")
>>> d1 = etree.SubElement(c, "d")
>>> d2 = etree.SubElement(c, "d")
>>> tree = etree.ElementTree(c)
>>> print(tree.getpath(d2))
/c/d[2]
>>> tree.xpath(tree.getpath(d2)) == [d2]
True