首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XPath基于GrandChild值选择根节点

XPath基于GrandChild值选择根节点
EN

Stack Overflow用户
提问于 2018-04-23 21:26:22
回答 3查看 137关注 0票数 1

我有一个XML FIle,如下所示--

代码语言:javascript
复制
<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值&然后尝试使用父语法访问root,例如,

/ROOT/account/row/field@name='ID‘和text()="7650987"/parent::*

上面的表达式返回为空白。

我怎么换一样的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-24 00:02:40

首先,XML根标记没有关闭。您的XML应该以</ROOT>结束。在修复格式错误的之前,任何xpath都无法工作。关闭它时,尝试的解决方案将不再是空白的,尽管它将是不正确的:/ROOT/account/row/field[@name='ID' and text()="7650987"]/parent::*:这意味着返回“名称为'ID‘和文本为’7450978‘的’字段‘的父级”,这将是一个完整的XML块:

代码语言:javascript
复制
<row>
    <field name="ID">7650987</field>
    <field name="Length">00:02:37</field>
    <field name="Verif">6064625</field>
</row>

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

这可以翻译为:

代码语言:javascript
复制
//account[row/field/@name="ID" and row/field/text()="7650987"]/@code

我在在线XPATH测试器中测试了它并进行了工作。

票数 2
EN

Stack Overflow用户

发布于 2018-04-23 21:31:28

尝试结束xml根目录

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2018-04-23 21:57:44

这个XPath,

代码语言:javascript
复制
/ROOT/account[row/field[@name="ID"]="7650987"]/@code

将返回account元素的account属性,该元素具有一个row/field元素,其@name属性值为"ID",字符串值为"7650987"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49990240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档