gpt4 book ai didi

xml - XML 的 XPath 具有默认 namespace 且未定义前缀?

转载 作者:行者123 更新时间:2023-12-02 09:19:05 25 4
gpt4 key购买 nike

我有一个具有以下 xmlns 的根元素:

<Status xmlns="http://www.tandberg.com/XML/CUIL/2.0" 
product="TANDBERG Codec" version="1.0.0">

它没有 xmlns 的短名称 - 但我需要使用 xpath 查询文档以获取信息。我无法编辑 xml 文档本身。

我正在使用各种解析器,有些能够处理没有短名称的 xmlns,有些则不能。

下面的 XPath 将为我提供所需的数据 - 问题是 - xpath 是否应该按设计在上述场景中中断?

//*[local-name()='Hardware']/*[local-name()='Temperature'] 

IE:如果不添加 xmlns:xs="...",Notepad++ 将无法处理它以下网站可以处理它并给我我所期望的。 http://www.xpathtester.com/xpath

哪个是正确的实现?

最佳答案

短名称指的是命名空间前缀

XPath 本身没有将 namespace 前缀绑定(bind)到 namespace 的机制。您必须依赖 XPath 的更大上下文(XSLT 或其他托管语言)来声明命名空间前缀和命名空间之间的连接。

您的 local-name() 方法应该适用于任何符合规范的 XPath 实现。它通常是在纯 XPath 问题的答案中提供的,这些问题不另外说明 XPath 上下文或库。不幸的是,它也是由那些不理解或不必要地回避命名空间的人提供的。

理想情况下,当 XPath 的托管上下文已知时,应正确声明和使用 namespace 前缀,而不是通过 local-name() 来回避。

关于xml - XML 的 XPath 具有默认 namespace 且未定义前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29662275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com