我正在尝试解析一个 xml 文件并将其排列到一个表格中,将内容分隔为 isElement、isAttribute、Value、Text。
如何使用 ElementTree 模块来实现这一点?我知道使用 minidom 模块可以做到这一点。
我想使用 ElementTree 的原因是效率。此处提供了我想要实现的示例:http: //python.zirael.org/e-gtk-treeview4.html
关于如何使用 ElementTree 模块将 xml 内容分离为元素、子元素等的任何建议?
这是我到目前为止所拥有的:
import xml.etree.cElementTree as ET
filetree = ET.ElementTree(file = "some_file.xml")
for child in filetree.iter():
print child.tag, child.text, child.attrib
对于以下示例 xml 文件:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
我得到这个作为输出:
data
{}
country
{'name': 'Liechtenstein'}
rank 1 {}
year 2008 {}
gdppc 141100 {}
neighbor None {'direction': 'E', 'name': 'Austria'}
neighbor None {'direction': 'W', 'name': 'Switzerland'}
country
{'name': 'Singapore'}
rank 4 {}
year 2011 {}
gdppc 59900 {}
neighbor None {'direction': 'N', 'name': 'Malaysia'}
country
{'name': 'Panama'}
rank 68 {}
year 2011 {}
gdppc 13600 {}
neighbor None {'direction': 'W', 'name': 'Costa Rica'}
neighbor None {'direction': 'E', 'name': 'Colombia'}
我确实在另一篇文章中找到了类似的东西,但它使用了 DOM 模块。 遍历元素嵌套结构中的所有 XML 节点
根据收到的评论,这就是我想要实现的目标:
data (type Element)
country(Element)
Text = None
name(Attribute)
value: Liechtenstein
rank(Element)
Text = 1
year(Element)
Text = 2008
gdppc(Element)
Text = 141100
neighbour(Element)
name(Attribute)
value: Austria
direction(Attribute)
value: E
neighbour(Element)
name(Attribute)
value: Switzerland
direction(Attribute)
value: W
country(Element)
Text = None
name(Attribute)
value: Singapore
rank(Element)
Text = 4
我希望能够以上述树状结构呈现我的数据。为此,我需要跟踪他们的关系。希望这能澄清这个问题。