对于节点及其直接子节点具有相同名称的给定 XML(不能更改命名),在这里 items
只对孩子进行迭代,有一个 items
字段的 description
迭代中出现了items
类型的父节点,如果我理解的好,连iter
都会调用自身
from xml.etree import ElementTree
content = """<?xml version="1.0" encoding="utf-8"?>
<root>
<items>
<items>
<description>foo1</description>
</items>
<items>
<description>foo2</description>
</items>
</items>
</root>
"""
tree = ElementTree.fromstring(content)
print(">>", tree.find("items"))
for item in tree.find("items").iter("items"):
print(item, item.find("description"))
电流输出
>> <Element 'items' at 0x0000020B5CBF8720>
<Element 'items' at 0x0000020B5CBF8720> None
<Element 'items' at 0x0000020B5CBF8770> <Element 'description' at 0x0000020B5CBF87C0>
<Element 'items' at 0x0000020B5CBF8810> <Element 'description' at 0x0000020B5CBF8860>
预期产出
>> <Element 'items' at 0x0000020B5CBF8720>
<Element 'items' at 0x0000020B5CBF8770> <Element 'description' at 0x0000020B5CBF87C0>
<Element 'items' at 0x0000020B5CBF8810> <Element 'description' at 0x0000020B5CBF8860>
将 XPath 与 findall() 结合使用。
tree.findall('items/items')