在数组中读取和存储XML数据

时间:2015-07-17 19:22:59

标签: python xml

很抱歉,如果这个问题很愚蠢,但我似乎无法解决这个问题。我有一个.xml文件,看起来像:

<?xml version="1.0" encoding="utf-8"?>
<tags>
  <row Id="1" TagName="bayesian" Count="1342" ExcerptPostId="20258" WikiPostId="20257" />
  <row Id="2" TagName="prior" Count="168" ExcerptPostId="62158" WikiPostId="62157" />
  <row Id="3" TagName="elicitation" Count="6" />
  <row Id="4" TagName="normality" Count="191" ExcerptPostId="67815" WikiPostId="67814" />
  <row Id="5" TagName="open-source" Count="13" />
  <row Id="6" TagName="distributions" Count="1880" ExcerptPostId="8046" WikiPostId="8045" />
  <row Id="9" TagName="machine-learning" Count="2564" ExcerptPostId="9066" WikiPostId="9065" />
  <row Id="10" TagName="dataset" Count="514" ExcerptPostId="20490" WikiPostId="20489" />
  <row Id="11" TagName="sample" Count="219" ExcerptPostId="28276" WikiPostId="28275" />
  <row Id="12" TagName="population" Count="120" ExcerptPostId="69287" WikiPostId="69286" />
  <row Id="15" TagName="measurement" Count="97" ExcerptPostId="66319" WikiPostId="66318" />
  <row Id="16" TagName="scales" Count="157" />

我需要做的就是读取这个.xml文件并将数据存储在数组中,以便我可以分析它。我执行以下步骤;

import xml.etree.ElementTree as ET
tree = ET.parse('Tags.xml')
root = tree.getroot()

print root
<Element 'tags' at 0x10365d810>
In [37]: root.attrib
Out[37]: {}

root.getchildren
Out[38]: <bound method Element.getchildren of <Element 'tags' at 0x10365d810>>

In [39]: root.getiterator
Out[39]: <bound method Element.getiterator of <Element 'tags' at 0x10365d810>>

In [40]: root.items
Out[40]: <bound method Element.items of <Element 'tags' at 0x10365d810>>

In [41]: root.keys
Out[41]: <bound method Element.keys of <Element 'tags' at 0x10365d810>>

不知何故,我无法找到填充列的步骤。 感谢您的帮助,我是Python和XML的新手 普拉卡什

2 个答案:

答案 0 :(得分:0)

root.getchildren是一个函数,您应该调用它来获取根节点的子节点(如 - root.getchildren()),尽管它们自Python 2.7以来已被弃用。

您应该迭代root,然后将root子项的属性存储在列表中,例如 -

listofelems = []
for item in root:
    listofelems.append(item.attrib)
print(listofelems)

答案 1 :(得分:0)

迭代root让孩子们。每个孩子都有一个名为dict的{​​{1}}成员。在您的XML中,attrib成员将包含您需要的所有数据。

.attrib