0

拥有这个 xml 文档

<root>
<bookstore>
    <presc:book>
        <presc:id>1</presc:id>
        <presc:title>Harry Potter</presc:title>
        <presc:price>29.99</presc:price>
    </presc:book>
    <presc:book>
        <presc:id>2</presc:id>
        <presc:title>Learning XML</presc:title>
        <presc:price>39.95</presc:price>
    </presc:book>
    <presc:book>
        <presc:id>3</presc:id>
        <presc:title>Java for Life</presc:title>
        <presc:price>54.49</presc:price>
    </presc:book>
</bookstore>
</root> 

我希望仅在 'pres:id'=2 的情况下获取 'presc:price' 的值。

谢谢你的帮助。

4

2 回答 2

0

首先,您需要<root>在文档末尾关闭您的节点。
然后因为presc:没有声明命名空间,所以需要使用local-name()函数,如下:

//*[local-name() = 'price' and ../id=2]
于 2013-01-21T21:51:18.763 回答
0

如果此 XMLpresc声明了其命名空间,并且您在使用的任何 XML API 中声明了相同的命名空间,那么您尝试访问的节点将是

/root/bookstore/presc:book[presc:id = 2]/presc:price

如果 XML 声明了其命名空间,但您不确定如何在您使用的 XML API 中声明它们,您可以通过以下操作找到价格:

//*[*[local-name() = 'id'] = 2]/*[local-name() = 'price'] 

就目前而言,您的 XML 目前不可用。

于 2013-01-22T02:47:30.453 回答