如何根据XPath中的其他元素属性值查找元素值

时间:2013-02-10 09:36:56

标签: xml xpath

我正在努力学习XPath,并且发现它很困难,因为我正在谷歌搜索所有这些。 这是我的XML:

<?xml version="1.0" encoding="utf-8"?>
    <details>
        <signature id="sig1">
            <name>mr. Barry Smith</name>
            <telephone type="fixed">01234 123456</telephone>
            <telephone type="mobile">071234562</telephone>
        </signature>

        <signature id="sig2">
            <name>mr. Harry Smith</name>
            <telephone type="fixed">01234 123456</telephone>
        </signature>
    </details>

我怎样才能找到拥有手机的人的姓名,我可以获得或者两者兼而有之。

我一直在尝试这样的事情:

staffdetails/signature/telephone[@type='mobile']name

另外,是否有使用XPAth的参考指南,所以我可以很容易地找出我想要的任何查询?使用在线教程我已经找到了XPath如何工作的解释,但是这些例子还不够。

谢谢!

2 个答案:

答案 0 :(得分:7)

此处无需使用following-sibling::或嵌套谓词。就这样做:

/details/signature[telephone/@type = 'mobile']/name

答案 1 :(得分:1)

这应该有效:

//signature/name[following-sibling::telephone[@type='mobile']]

读作:

  

选择name父母和signature兄弟telephone = type的任何mobile

关于参考,我实际上从the examples in the spec中学到了很多东西!