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

如何在Python中无需修改XML文件筛选指定name属性的prop元素?

提取XML中指定name属性的元素(无需修改原文件的Python实现)

示例XML文件

<!-- 示例XML:content.xml -->
<root>
  <prop name="Geometry">多边形坐标数据:(0,0),(10,0),(10,10),(0,10)</prop>
  <prop name="Material">铝合金</prop>
  <prop name="Geometry">曲面参数:r=5, theta=π/2</prop>
  <prop name="Weight">2.5kg</prop>
</root>

方案1:使用Python标准库xml.etree.ElementTree

无需额外安装依赖,直接用内置模块完成筛选:

import xml.etree.ElementTree as ET

# 直接解析原始XML文件(不修改原文件)
tree = ET.parse('content.xml')
root = tree.getroot()

# 通过XPath表达式筛选所有name属性为"Geometry"的<prop>元素
target_props = root.findall(".//prop[@name='Geometry']")

# 遍历处理筛选结果
for idx, prop in enumerate(target_props, 1):
    print(f"第{idx}个Geometry元素内容:{prop.text.strip()}")
    
# 若需保存结果到新文件
with open('extracted_geometry.xml', 'w', encoding='utf-8') as f:
    f.write('<extracted>\n')
    for prop in target_props:
        f.write(f'  {ET.tostring(prop, encoding="unicode")}')
    f.write('</extracted>')

方案2:使用lxml库(支持更复杂场景)

如果XML包含命名空间或需要更灵活的XPath支持,可使用lxml(需先安装:pip install lxml):

from lxml import etree

# 解析原始XML
tree = etree.parse('content.xml')
root = tree.getroot()

# 筛选目标元素
target_props = root.xpath("//prop[@name='Geometry']")

# 输出或处理结果
for prop in target_props:
    # 打印完整的XML元素
    print(etree.tostring(prop, encoding='utf-8').decode('utf-8'))

核心优势

  • 完全无需修改原始XML文件,符合论文研究中保留原始数据完整性的要求
  • 通过XPath表达式直接定位目标元素,逻辑清晰、效率高
  • 两种方案覆盖了从基础到复杂的XML处理场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:23:23