【问题标题】:Xpath expressionsXpath 表达式
【发布时间】:2013-03-26 13:56:50
【问题描述】:

我需要获取 <mathcolor> 元素的值,因为元素 <colorvalue> 的值为 2。请更正下面给出的 Xpath 表达式:

Xpath 表达式已尝试:

/colors/child::color/child::mathcolor[colorvalue='2']

示例 XML:

<?xml version="1.0"?>
<colors>
    <color>
        <mathcolor>#007dc5</mathcolor>
        <textcolor>C=100 M=40 Y=0 K=0</textcolor>
        <colorvalue>2</colorvalue>
    </color>
    <color>
        <mathcolor>#ed1b34</mathcolor>
        <textcolor>C=0 M=100 Y=85 K=0</textcolor>
        <colorvalue>3</colorvalue>
    </color>
</colors>

【问题讨论】:

    标签: xml xpath


    【解决方案1】:

    差不多,试试吧:

    /colors/child::color[colorvalue='2']/child::mathcolor/text()
    

    或更简单

    /colors/color[colorvalue='2']/mathcolor/text()
    

    【讨论】:

    • child:: 是多余的,不是吗?我更喜欢你最初的回答
    • 是的,但我想使用他的问题中使用的确切示例 siva2012。
    • 最后可能需要/text() 才能获得值
    【解决方案2】:

    我更喜欢首先使用 //mathcolor 来定位您想要的实际元素。剩下的就是说,如果你继续向下结构,你会看到一个名为 colorvalue 的同级节点,其文本节点 = 2。

    //mathcolor[./following-sibling::colorvalue[./text()='2']]
    

    【讨论】:

    • 考虑为您的答案添加解释。
    • 如果color的孩子的顺序没有定义怎么办?也许//mathcolor[../colorvalue='2']/text() 会更稳定?
    • 我喜欢它,不确定我见过很多子节点的顺序发生变化的场合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多