XPath根据GrandChild值选择根节点

安纳普

我有一个XML文件,如下所示-

<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>

我需要基于Verif值提取“ code =“ XX”“。

我可以使用Xpath来获取Verif值,然后尝试使用Parent语法(例如,

/ ROOT / account / row / field [@ name ='ID'和text()=“ 7650987”] / parent :: *

上面的表达式返回空白。

我该如何更改?

Payam

首先,您的XML ROOT标记未关闭。您的XML应该以结尾</ROOT>修复格式错误的xml之前,xpath无效当您关闭它时,您尝试的解决方案将不再是空白,尽管它不是正确的::/ROOT/account/row/field[@name='ID' and text()="7650987"]/parent::*这意味着返回“名称为“ ID”且文本为“ 7450978”的“字段”的父项”,将是一整段XML:

<row>
    <field name="ID">7650987</field>
    <field name="Length">00:02:37</field>
    <field name="Verif">6064625</field>
</row>

现在,您需要的是:“具有子代“行/字段”,名称为“ ID”,文本为“ 7450978”的“帐户”的代码值”

可以将其翻译为:

//account[row/field/@name="ID" and row/field/text()="7650987"]/@code

我在在线XPATH测试器中对其进行了测试并可以正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章