You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何通过循环解析XML中多实例的F11标签(F1亦为多实例)

如何解析XML中嵌套且重复出现的F11标签?

问题背景

我有一个结构如下的XML文件:

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

我想要解析其中的F11标签——它作为F1的子标签,两者都可能重复出现n次。目前我能统计出F1标签的数量,但不知道怎么进一步解析每个F1下的F11,我的代码如下:

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

解决方案

没问题,其实你不用先统计F1的数量再用索引循环,getElementsByTagName返回的是一个可直接遍历的节点集合,而且每个F1节点也能调用这个方法来获取它的子节点F11。给你两种实用的实现方式:

方式一:逐层遍历(更清晰,适合需要处理F1节点的场景)

如果后续你还需要对F1节点做其他操作,这种逐层遍历的方式更直观:

from xml.dom.minidom import parseString

if __name__ == "__main__":
    with open('final_resp.xml','r') as f:
        doc = f.read()
    dom = parseString(doc)
    
    # 获取所有F1节点并遍历
    for f1_node in dom.getElementsByTagName('F1'):
        # 从当前F1节点下获取所有F11子节点
        for f11_node in f1_node.getElementsByTagName('F11'):
            # 提取F11的文本内容(注意strip()去掉多余空格)
            f11_content = f11_node.firstChild.nodeValue.strip()
            print(f"解析到F11内容:{f11_content}")

方式二:直接定位F11(更简洁,适合只需要F11的场景)

如果你的XML里F11只会出现在F1节点下,完全可以直接全局获取所有F11节点,跳过F1的遍历步骤:

from xml.dom.minidom import parseString

if __name__ == "__main__":
    with open('final_resp.xml','r') as f:
        doc = f.read()
    dom = parseString(doc)
    
    # 直接获取所有F11节点
    for f11_node in dom.getElementsByTagName('F11'):
        f11_content = f11_node.firstChild.nodeValue.strip()
        print(f"解析到F11内容:{f11_content}")

小提示

  • 不用再用range(f1_count)这种方式遍历了,直接迭代getElementsByTagName返回的节点集合,代码更简洁也不容易出错。
  • 如果F11标签里除了文本还有其他子节点,你可能需要调整内容提取的逻辑,但如果是纯文本内容,firstChild.nodeValue就足够用啦。

内容的提问来源于stack exchange,提问作者Sumit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:55:07