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

时间:2017-12-16 08:41:56

标签: java xpath soap 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响应中得到折扣(这里没有包含)

请帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

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