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

如何从XML中按Kod='N'条件提取去重的doc_num与X属性值

实现思路

  • 第一步解析XML结构,提取根节点
    的doc_num属性值
  • 第二步通过XPath表达式过滤出所有Kod="N"的节点
  • 第三步收集所有符合条件节点的X属性值后做去重处理
  • 第四步按要求的格式对齐输出结果

Python实现代码(依赖lxml库)

from lxml import etree

# 解析XML内容
xml_content = '''<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<main doc_num="99">
<item name="A">
    <Dok Kod="N" X="1" Id="5"/>
    <Dok Kod="N" X="4" Id="5"/>
</item>
<item name="B">
    <Dok Kod="N" X="1" Id="2"/>
    <Dok Kod="N" X="4" Id="6"/>
    <Dok Kod="N" X="5" Id="8"/>
    <Dok Kod="Z" X="4553" Id="8"/>
</item>
</main>'''

root = etree.fromstring(xml_content.encode('utf-8'))
# 获取doc_num属性值
doc_num = root.get('doc_num')
# 筛选所有Kod属性为N的Dok节点
dok_nodes = root.xpath('//Dok[@Kod="N"]')
# 收集X值并去重、排序
x_values = sorted(set(node.get('X') for node in dok_nodes))

# 按要求格式输出
print(f"{'doc_num':<12}X")
for x in x_values:
    print(f"{doc_num:<12}{x}")

额外说明

如果你的运行环境支持XPath 2.0,可以直接用XPath表达式 distinct-values(//Dok[@Kod="N"]/@X) 一步获取所有去重后的X属性值,再搭配/main/@doc_num拿到文档编号即可快速拼接结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:06:00