2017-03-08 59 views
0

下面的列表解析XML是XML:使用Python和形成价值观

<root> 
    <body> 
     <node1>1</node1> 
     <node2>2</node2> 
     <node3> 
      <nodea>abc</nodea> 
      <nodeb>bca></nodeb> 
      <nodec> 
       <nodeq> 
        <nodeqs>@gmail</nodeqs> 
       </nodeq> 
       <nodeq> 
        <nodeqs>@yahoo</nodeqs> 
       </nodeq> 
      </nodec> 
    </node3> 
    </body> 
</root> 

我需要形成像记录:

[1,2,'abc','bca', '@gmail'] 
[1,2,'abc','bca', '@yahoo'] 

回答

0

使用ElementTree和的findAll方法(的XPath)

x=""" 
<root> 
<body> 
    <node1>1</node1> 
    <node2>2</node2> 
    <node3> 
     <nodea>abc</nodea> 
     <nodeb>bca</nodeb> 
     <nodec> 
      <nodeq> 
       <nodeqs>@gmail</nodeqs> 
      </nodeq> 
      <nodeq> 
       <nodeqs>@yahoo</nodeqs> 
      </nodeq> 
     </nodec> 
</node3> 
</body> 
</root>""" 

info = list() 

import xml.etree.ElementTree as ET 
tree = ET.ElementTree(ET.fromstring(x)) 
for i in tree.findall('//*/'): 
    if i.text.strip(): 
     print type(i) 
     print i.text 
     info.append(i.text) 

print info > ['1', '2', 'abc', 'bca', '@gmail', '@yahoo'] 
+0

甚至,我们早些时候尝试过这种方式,但结果应该是[[1,2,'abc','bca','@gmail'],[1,2,'abc',' bca','@yahoo']] – heaven2sai