我有一个XML FIle,如下所示 -
<ROOT>
<account name="ABC" code="XX">
<row>
<field name="ID">7650987</field>
<field name="Length">00:02:37</field>
<field name="Verif">6064625</field>
</row>
<row>
<field name="ID">7651474</field>
<field name="Length">00:01:08</field>
<field name="Verif">6065064</field>
</row>
<row>
<field name="ID">7651105</field>
<field name="Length">00:00:42</field>
<field name="Verif">6064737</field>
</row>
</account>
我需要提取&#34;代码=&#34; XX&#34;&#34;基于Verif值。
我可以使用Xpath&amp;获取Verif值。然后我尝试使用父语法(例如
)到达root/ ROOT /帐户/行/场[@name =&#39; ID&#39;和text()=&#34; 7650987&#34;] / parent :: *
上面的表达式返回空白。
我该如何改变?
答案 0 :(得分:1)
首先,您的XML ROOT标记未关闭。你的XML应该完成
</ROOT>
。在修复格式错误的xml 之前,没有xpath可行。当您关闭它时,您尝试的解决方案将不再是空白,尽管它不会是正确的:/ROOT/account/row/field[@name='ID' and text()="7650987"]/parent::*
:
这意味着返回&#34;&#39;字段的父母&#39;名称为&#39; ID&#39; &#39; 7450978&#39;&#34;的文本,这将是整个XML块:
<row>
<field name="ID">7650987</field>
<field name="Length">00:02:37</field>
<field name="Verif">6064625</field>
</row>
现在,您需要的是:&#34;&#39;帐户的代码值&#39;有一个孩子&#39;行/字段&#39;名称为&#39; ID&#39; &#39; 7450978&#39;&#34;
的文字这可以翻译为:
//account[row/field/@name="ID" and row/field/text()="7650987"]/@code
我在在线XPATH测试仪上测试过它。
答案 1 :(得分:0)
尝试结束xml ROOT
<ROOT>
<account name="ABC" code="XX">
<row>
<field name="ID">7650987</field>
<field name="Length">00:02:37</field>
<field name="Verif">6064625</field>
</row>
<row>
<field name="ID">7651474</field>
<field name="Length">00:01:08</field>
<field name="Verif">6065064</field>
</row>
<row>
<field name="ID">7651105</field>
<field name="Length">00:00:42</field>
<field name="Verif">6064737</field>
</row>
</account>
</ROOT>
答案 2 :(得分:0)
这个XPath,
/ROOT/account[row/field[@name="ID"]="7650987"]/@code
将返回@code
元素的account
属性,其中row/field
元素的@name
属性值为"ID"
,字符串值为{{ 1}},按要求。