XML解析:在Python中将great-great -...-孙子元素设置为根

时间:2015-01-16 19:54:06

标签: python xml parsing python-2.7 xml-parsing

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

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

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

有没有什么方法可以设置特定的伟大的-...- grand子元素(例如element10)作为根元素而不迭代整个结构?

2 个答案:

答案 0 :(得分:1)

试试这个:

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

DEMO:

$ 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>

答案 1 :(得分:1)

由于this很棒的文章,我终于解决了它。

tree.iter(tag = 'element10')

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

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