如何使用xpath在xml中查找数字数据类型信息

时间:2019-07-16 07:40:48

标签: xml xpath

下面是代码,我只想在其他事务集中定位8989而不是ABCD,通常我们希望得到项目的混合,但是我们想定位到仅包含数字数据的树和节点。

尝试在xpath中搜索数字函数,但似乎没有一个适合我的情况,通常只有转换函数可用。 我尝试过的事情:-

"number(.//dtv:IP[dtv:IPCode='LOGICLABEL']/dtv:IPValue)"

在这里,即使这是数字,我还是将所有内容都设为NaN(不是数字)。

<dtv:IP>
 <dtv:IPCode><![CDATA[LOGICLABEL]]></dtv:IPCode>
 <dtv:IPType><![CDATA[STRING]]></dtv:IPType>
 <dtv:IPValue><![CDATA[8989]]></dtv:IPValue>
</dtv:IP>

VS

<dtv:IP>
 <dtv:IPCode><![CDATA[LOGICLABEL]]></dtv:IPCode>
 <dtv:IPType><![CDATA[STRING]]></dtv:IPType>
 <dtv:IPValue><![CDATA[ABCD]]></dtv:IPValue>
</dtv:IP>

在上面的代码中,我只想获取数字值,即:8989,但我的xpath不应位于ABCD上。 在Xpath中可以吗?

2 个答案:

答案 0 :(得分:1)

"number(.//dtv:IP[dtv:IPCode='LOGICLABEL']/dtv:IPValue)"

这很好,在有数字时也可以工作,唯一的是我必须用0代替上面描述的NaN。

到目前为止,使用翻译功能一直可以得到它。

translate('NaN',number(/dtv:IP[dtv:IPCode='LOGICLABEL']/dtv:IPValue),'0')

我最初尝试解决问题的分析是错误的,对此我深表歉意。

答案 1 :(得分:1)

/dtv:IP/dtv:IPValue[string(number(.)) != "NaN"]