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

带命名空间的文档路径表达式问题:无法获取EventType属性值

解决XQuery无法返回XML中EventType属性值的问题

这个问题的核心原因是你的XML文档使用了默认命名空间,而你的XQuery代码没有处理命名空间的绑定,导致节点匹配失败。

问题分析

你的XML根元素<Report>上定义了默认命名空间:

xmlns="VehicleExcelActivityReport"

这意味着文档中所有没有前缀的元素(比如OwnerList、Detail等)都属于这个命名空间。XQuery是严格区分命名空间的,如果你不声明并使用这个命名空间,XQuery引擎会认为你要查找的是没有命名空间的节点,自然匹配不到任何结果。

解决方案

方式1:显式绑定命名空间(推荐)

在XQuery开头声明命名空间,然后在节点路径中使用对应的前缀:

declare namespace veh = "VehicleExcelActivityReport";
for $x in /veh:Report/veh:OwnerList/veh:Owner_Collection/veh:Owner/veh:Activities/veh:Detail_Collection/veh:Detail
return string($x/@EventType)

也可以简化为更紧凑的写法,省略for循环:

declare namespace veh = "VehicleExcelActivityReport";
/veh:Report/veh:OwnerList/veh:Owner_Collection/veh:Owner/veh:Activities/veh:Detail_Collection/veh:Detail/@EventType/string()

方式2:使用通配符匹配任意命名空间(临时应急)

如果不想显式绑定命名空间,可以用*:通配符匹配任意命名空间下的节点(不推荐在正式代码中使用,会降低代码可读性和匹配精准性):

for $x in /*:Report/*:OwnerList/*:Owner_Collection/*:Owner/*:Activities/*:Detail_Collection/*:Detail
return string($x/@EventType)

预期结果

运行上述修改后的XQuery代码,你将会得到以下结果:

Ignition On
Ignition Off

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:32:30