Xpath或Xquery忽略任何类型的命名空间前缀

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xpath或Xquery忽略任何类型的命名空间前缀相关的知识,希望对你有一定的参考价值。

我有SOAP响应,我正在检索它的一部分,那部分看起来像

<ns4:discounts>
      <ns4:discount code=‘ABC’ description=‘Hello World’ /> </ns4:discounts>

但我需要的是(例如wihout名称空间前缀)

<discounts>
      <discount code=‘ABC’ description=‘Hello World’ />
</discounts>

如何使用xquery或xpath获取此信息?正如我已经提到的,我从SOAP响应中得到折扣(这里没有包含)

请帮忙,谢谢。

答案

如果输入节点位于命名空间中,则任何简单地从输入中选择节点的查询将返回命名空间中的节点。如果你想要没有名称空间的节点,那么你需要转换输入而不是简单地从中选择,你可以在XQuery中做,但不能在XPath中做。 (并且您可以在XSLT中更轻松地完成它。)基本上,您必须通过树的递归遍历来重构XML,其中通过重命名旧节点来形成新节点。

以上是关于Xpath或Xquery忽略任何类型的命名空间前缀的主要内容,如果未能解决你的问题,请参考以下文章

XPath / XQuery:在节点中查找文本,但忽略特定后代元素的内容

如何使用 XPath 忽略命名空间

来自带有命名空间前缀的 xml 的 xpath 表达式

如何将 XPath 与没有前缀的默认命名空间一起使用?

SimpleXML 中的 XPath 用于默认命名空间,无需前缀

XPATHS和默认命名空间