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

如何提取XML中所有无子元素的唯一节点?是否有对应内置方法或XPath?

可以直接通过XPath表达式实现筛选,不需要循环遍历所有节点后再判断子元素。

你可以使用//*[not(*)]这个XPath语法直接匹配所有不包含子元素的叶子节点,其中:

  • //* 匹配XML文档中所有层级的元素节点
  • [not(*)] 是过滤条件,仅保留没有子元素节点的节点

由于你需要的是唯一的节点路径,多个相同结构的Customer节点生成的路径完全一致,所以可以用集合自动去重,优化后的代码如下:

import lxml.etree as etree

tree = etree.parse('my_file.xml')
unique_paths = set()
for node in tree.xpath('//*[not(*)]'):
    unique_paths.add(tree.getpath(node))

# 按路径层级顺序输出
for path in sorted(unique_paths):
    print(path)

运行后输出结果和你期望的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:18:03