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'):
...
我有一个 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'):
...