XPath表达式

5
我需要获取元素<colorvalue>的值为2时,<mathcolor>元素的值。请纠正以下给出的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>
2个回答

3
几乎,试试这个:
/colors/child::color[colorvalue='2']/child::mathcolor/text()

或者更简单
/colors/color[colorvalue='2']/mathcolor/text()

child:: 这些是多余的,不是吗?我更喜欢你最初的答案。 - MattH
是的,有,但我想使用siva2012在他的问题中使用的确切示例。 - TheEwook
可能需要在末尾加上/text()来获取 - MattH

0

我更喜欢首先使用//mathcolor来定位您想要的实际元素。其余部分是为了说明,如果您继续沿着结构走,您将看到一个名为colorvalue的后续同级节点,其文本节点= 2。

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

考虑为你的答案添加解释。 - Olivier De Meulder
如果color的子元素顺序未定义怎么办?也许使用//mathcolor[../colorvalue='2']/text()会更稳定? - Daniel Haley
我喜欢它,不确定我是否看到过很多次子节点的顺序改变的情况。 - Dominic Giallombardo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接