Python XML解析使用循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python XML解析使用循环相关的知识,希望对你有一定的参考价值。

我有一个XML文件,如下所示:

<A><B><C>
    <D>
        .
        .
        .
    </D>
    <E>
        .
        .
        .
        .
        .
    </D>
    <F>
        <F1>
            <F11>
                .
                .
                .
                .
                .
            </F11>
        </F1>
        <F1>
            <F11>
                .
                .
                .
                .
                .
                .
                .
            </F11>
        </F1>
    </F>

我想解析名为F11的标签,它可以出现多次。这是F1的子标签,F1也可以存在n次。我一直在解析,但我可以找出F1在xml文件中出现的次数。以下是代码:

from xml.dom.minidom import parseString
if __name__ == "__main__":
    with open('final_resp.xml','r') as f:
        doc = (f.read())

    dom = parseString(doc)
    f1_count = len(dom.getElementsByTagName('F1'))
    for x in range(0,f1_count):
        //parsing of each F1 tag

有人可以帮帮我吗?

答案

最后,我发现了有效的解决方案。使用xml.etree.ElementTree,我们可以找到所需标记的出现并解析它。

import xml.etree.ElementTree as ET

tree = ET.parse('data.xml')
root = tree.getroot()
for responses in root.findall('./B/C/F/F1'):
    date = responses.find('./F11/DATE-REPORTED').text
    print(a)
另一答案

首先,您需要有一个有效的XML文件,如:

data.hml:

<note>
<A>Tove</A>
<B>Jani</B>
<C>Reminder</C>
<D>Don't forget me this weekend!</D>
<E>SOme data</E>
<F>
  <F1>
    <F11>
      Some F11 Datas
    </F11>
  </F1>
  <F2>
    <F12>
      Some F12 data
    </F12>
  </F2>
</F>
</note>

您可以使用pythons内置的xml模块来获取数据:

import xml.etree.ElementTree as ET

tree = ET.parse('data.xml')
root = tree.getroot()

for item in root[5]:
    print(item[0].text)

XML是一种数据载体格式,您不能使用重复的标签

以上是关于Python XML解析使用循环的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

从流输入中解析没有根元素的 XML 片段列表

无法解析片段中的 findViewById [重复]

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

Python中verbaim标签使用详解