如何通过xpath中的另一个属性值获取属性值

时间:2012-07-11 18:41:16

标签: xpath

<?xml version="1.0" encoding="UTF-8"?>
<serviceOfferings xmlns="http://www.abc.com/aaa" xmlns:ns2="http://www.w3.org/2005/Atom">
    <serviceOffering type="provider">
        <links>
            <link title="Service Provider" type="application/xml" rel="self" href="https://www.yahoo.com"/>
            <link rel="create" href="https://www.google.com/create"/>
        </links>
    </serviceOffering>
</serviceOfferings>

如何获取属性hrefrel

的链接的create

2 个答案:

答案 0 :(得分:0)

目标元素位于默认命名空间中。首先,您需要使用XPath引擎注册该命名空间。你如何做到这一点取决于你使用的工具,这意味着它超出了这个问题的范围(因为你还没有告诉我们你是如何你&#39;重新评估你的表达方式)。

假设您已将名称空间注册到名为aaa的前缀。像这样选择所需的link

//aaa:link[@rel='create']

或者,更具体地说:

/*/*/*/aaa:link[@rel='create']

答案 1 :(得分:0)

为了完整起见,在大多数情况下,这也可以在不注册命名空间的情况下实现,但代价是可读性降低:

/*/*/*/*[name()='link' and @rel='create']

这将选择名称为"link"的所有元素(无论它们属于哪个名称空间),并且具有rel属性,其字符串值为"create",并且是宏大的 - XML文档顶级元素的子项。