使用Python将XML节点解析为列表

时间:2014-11-29 15:40:54

标签: python xml list

我在Python中使用DOM解析XML文件。 我的一些XML节点包含一个列表。

示例如下:

<items>
 <item>
    <name>name001</name>
    <rows>10</rows>
    <columns>14</columns>
    <information>
       <i1>[[3, 2]]</i1>
       <i2>[[6, 13]]</i2>
       <i3>[[3, 5]]</i3>
       <i4>[[6, 10], [8, 6]]</i4>
       <i5>[[6, 12]]</i5>
    </information>
 </item>
 <item>
    <name>name072</name>
    <rows>10</rows>
    <columns>13</columns>
    <information>
       <i1>[[3, 5]]</i1>
       <i2>[[8, 2]]</i2>
       <i3>[[6, 6], [8, 11]]</i3>
       <i4>[[4, 7]]</i4>
       <i5>[]</i5>
    </information>
 </item>
</items>

现在我正在解析XML文件:

dom = parse('file.xml')
el = dom.documentElement
allInformation = el.getElementsByTagName('information')
for information in allInformation:
   for specific in information.childNodes:
      if specific.nodeType == specific.ELEMENT_NODE:
         if specific.nodeName == "i1":
           self.i1 = specific.firstChild.nodeValue

注意:i1是我文件中的变量:self.i1 = [] 现在对于self.i1的输出是:[[3,5]]

现在,我试图选择i1 [0] [0],这会给出&#39; [&#39;结果是。 我的i1被解释为一个字符串,但我试图将其解释为一个列表。 我怎么能解决这个问题?

最后但并非最不重要的是,我还在寻找一种解析方式,例如#34; name072&#34;。 现在我总是解析我的整个列表,而我只使用最后一个列表。

编辑:我试图让这个更清楚。如果您还有任何建议/问题,请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以使用ast.literal_eval

from ast import literal_eval

然后

self.i1 = literal_eval(specific.firstChild.nodeValue)