4

私はしばしば非常に複雑なドキュメントを扱っており、効果的にリバース エンジニアリングを行っています。条件として機能するノードに到達するために通過するパスを使用して、特定のノードの値を変更するコードを記述する必要があります。

XML データを調べてその構造を理解する場合、このパスの表現があると非常に便利です。その後、コード内のパスを使用して、その特定のノードに到達できます。

たとえば、以下のドキュメントからカタログ > 本 > 教科書 > 著者という表現を取得できます。

これを可能にするPythonのライブラリはありますか?

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

1 に答える 1

6

lxmlライブラリには、「その要素を見つけるための構造的な絶対 XPath 式を返す」etree.Element.getpathメソッド (Generating XPath expressions前のリンクで検索)があります。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 に答える