XML 解析:将 great-great-...-grandchild 元素设置为 Python 中的根元素

XML parsing: set great-great-...-grandchild element as a root in Python

我有一个 XML 文件,其结构如下:

<element1>
    <element2>
        ...
        <element10 name="a">
            ...

我正在尝试使用 The ElementTree XML API 在 Python 2.7 中解析此文件。但是我要找的数据深藏在结构中

有什么方法可以将特定的曾曾-...-曾孙元素(例如 element10)设置为根元素而不迭代整个结构?

试试这个:

'(//*[starts-with(name(), "element")])[last()]'

演示:

$ cat file
<element1>
    <element2></element2>
    <element3></element3>
    <element4></element4>
    <element5></element5>
    <element6></element6>
    <element10 name="a">x</element10>
</element1>

代码:

(也适用于 xmllint

$ saxon-lint.pl --xpath '(//*[starts-with(name(), "element")])[last()]' file

输出:

<element10 name="a">x</element10>

感谢 this 很棒的文章,我终于解决了这个问题。

tree.iter(tag = 'element10')

这将在结​​构中找到所需的元素,然后您可以迭代他的子元素,即使树中有更多 'element10' 个命名元素。

for element in tree.iter(tag = 'element10'):
    ...