【问题标题】:Parsing XML using python and form a list of values使用python解析XML并形成值列表
【发布时间】:2017-03-08 14:10:09
【问题描述】:

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

【问题讨论】:

    标签: python json xml tree


    【解决方案1】:

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

    【讨论】:

    • 甚至,我们之前已经尝试过,但结果应该是 [[1,2,'abc','bca', '@gmail'], [1,2,' abc','bca', '@yahoo']]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多