Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Xpath表达式_Xml_Xpath - Fatal编程技术网

Xml Xpath表达式

Xml Xpath表达式,xml,xpath,Xml,Xpath,我需要获取元素的值,因为元素的值为2。请更正下面给出的Xpath表达式: Xpath表达式已尝试: /colors/child::color/child::mathcolor[colorvalue='2'] <?xml version="1.0"?> <colors> <color> <mathcolor>#007dc5</mathcolor> <textcolor>C=100 M=

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

Xpath表达式已尝试:

/colors/child::color/child::mathcolor[colorvalue='2']
<?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:

/colors/child::color/child::mathcolor[colorvalue='2']
<?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>

#007dc5
C=100 M=40 Y=0 K=0
2.
#ed1b34
C=0 M=100 Y=85 K=0
3.
差不多了,试试看:

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

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

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

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

孩子::是多余的,不是吗?我更喜欢你最初的回答是的,但我想使用他问题中使用的确切示例siva2012。可能需要在结尾处添加一个
/text()
,以获得值。请考虑对你的回答添加一个解释。如果
颜色的子项的顺序没有定义怎么办?也许
//mathcolor[../colorvalue='2']/text()
会更稳定?我喜欢它,不确定我见过很多次子节点顺序发生变化的情况。