下面是代码,我只想在其他事务集中定位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中可以吗?
答案 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"]