使用python解析XML并形成值列表

2024-09-24 00:35:53 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是XML:

 <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']

Tags: bodyrootxmlyahoogmailabcnode1node2
1条回答
网友
1楼 · 发布于 2024-09-24 00:35:53

使用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']

相关问题 更多 >