如何使用 xpath 检索属性名称中包含冒号的属性的值

Posted

技术标签:

【中文标题】如何使用 xpath 检索属性名称中包含冒号的属性的值【英文标题】:How to retrieve value of an attribute which contains colon in the attribute name using xpath 【发布时间】:2012-06-09 07:35:57 【问题描述】:

我有一个简单的要求,我需要获取属性xml:id 的值,即af1。 我正在使用SAXParser,这是我的xpath:a/aff/@xml:id,相反我能够获取使用xpath:a/aff/@value 的价值。

但我无法检索该值,您能帮帮我吗?

<?xml version="1.0" encoding="UTF-8" ?>
<a>
   <aff xml:id="af1" value="a">
        <uAff>
            Hello
        </uAff>
    </aff>
    <aff xml:id="corr1">
        <uAff>
            Hello1
        </uAff>
    </aff>
</a>

提前致谢。

【问题讨论】:

【参考方案1】:

要获取您可以使用的属性的值:

/a/aff/@*[name()='xml:id']

【讨论】:

非常感谢 :-) 你的回答很准确 :-) 你能告诉我如何获取带有冒号的标签的值吗?如果是 aff:a 就说 aff 而不是 aff,怎么能我们解析它? 如果你有 aff:a 那么 aff 必须是一个命名空间,这是一个不同的问题。看看这里:***.com/questions/536441/… 或者你可以使用 local-name() 代替 name(),FWIW ***.com/a/11131700/32453【参考方案2】:

/a/aff/@xml:id 在获取值方面工作得很好......

您是否要同时获取这两个值?

如果您只想获取第一个值,您可以使用 /a/aff[1]/@xml:id

【讨论】:

如果没有冒号,你的答案是正确的,但是当有冒号时,它不会使用 /a/aff/@xml:id this xpath 获取属性值。

以上是关于如何使用 xpath 检索属性名称中包含冒号的属性的值的主要内容,如果未能解决你的问题,请参考以下文章

libxml2的xpath检索中文

如何指定一个元素以具有一个属性,该属性说明它在 XML 模式中包含多少个子元素?

在 JavaScript/jQuery 中,如何检索名称中包含空格的数据?

如何设置 QMenu 中包含的 QActions 的可访问名称

这里的这一属性如何在 ruby​​ 类中包含多个属性?

如何在 Entity Framework Group By 结果中包含属性