4

我经常处理非常复杂的文档,我实际上是在进行逆向工程。我需要编写代码来修改某些节点的值,并将遍历的路径作为条件到达节点。

在检查 XML 数据以了解其结构时,在此路径上进行表示会非常有用。然后我可以使用代码中的路径到达该特定节点。

例如,我可以从下面的文档中获取表示 Catalog > Book > Textbook > Author。

Python中是否有任何库允许我这样做?

<xml>
    <Catalog>
        <Book>
            <Textbook>
                <Author ="James" />
            </Textbook>
        </Book>
        <Journal>
            <Science>
                <Author ="James" />
            </Science>
        </Journal>
    </Catalog>
</xml>
4

1 回答 1

6

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
于 2012-11-12T21:47:16.717 回答