3

我正在尝试学习 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 的工作原理,但这些示例还不够全面。

谢谢!

4

2 回答 2

7

这里不需要使用following-sibling::或嵌套谓词。只需这样做:

/details/signature[telephone/@type = 'mobile']/name
于 2013-02-10T13:59:16.643 回答
1

这应该有效:

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

内容如下:

选择任何name具有signature父级和telephone兄弟级的type= mobile

关于参考,我实际上从规范中的示例中学到了最多!

于 2013-02-10T09:44:47.497 回答