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

如何用XPath或lxml获取带命名空间的XSD元素vc:minVersion数据?

解决XSD文件中vc:minVersion属性获取问题

你的代码无法获取到vc:minVersion值的原因有两个:

  • 你用XPath查找的是名为minVersion的元素,但目标实际上是根元素的属性
  • 没有正确针对带命名空间的属性编写XPath表达式

方法一:直接通过根节点获取属性(最简方案)

利用元素的get()方法,传入带命名空间的完整属性名(格式为{命名空间URI}属性名):

import lxml.etree as ET
dom = ET.parse('/lbs.xsd')
rootxml = dom.getroot()
# 使用命名空间URI+属性名的格式获取
min_version = rootxml.get('{http://www.w3.org/2007/XMLSchema-versioning}minVersion')
print(min_version)  # 输出:1.1

方法二:使用正确的XPath表达式

如果需要用XPath查找(比如场景中有多个该属性),要在XPath中用@标识属性,并带上vc前缀:

import lxml.etree as ET
dom = ET.parse('/lbs.xsd')
rootxml = dom.getroot()
nss = rootxml.nsmap
# 查找所有vc:minVersion属性,@表示属性,vc:对应命名空间前缀
for attr_value in rootxml.xpath('//@vc:minVersion', namespaces=nss):
    print(attr_value)  # 输出:1.1

关键说明

  • XML中带命名空间的属性必须通过命名空间前缀或完整URI来引用,不能直接写minVersion
  • XPath里@符号用于标识属性节点,//@vc:minVersion表示查找文档中所有vc命名空间下的minVersion属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:10:48