根据XPATH中属性中的多个条件选择元素

时间:2018-12-12 10:04:08

标签: xpath

我想根据术语元素的另一个属性的值来选择术语元素的Value属性。请在此处查看XPath的XML输入。

<Term Value="1025" Name="dnumber"/>
<Term Value="House" Name="adrtype"/>
<Term Value="My Address line 1" Name="adrline1"/>
<Term Value="My Address line 2" Name="adrline3"/>
<Term Value="12345" Name="adrpstcode"/>
<Term Value="07" Name="adrareacod"/>
<Term Value="123456789" Name="adrphone"/>
<Term Value="987654321" Name="adrmobile"/>
<Term Value="PARENT" Name="adrcntrel"/>

例如在这里,我要选择值“我的地址行1”,如果名称“ adrtype”的值为“ House”,而名称为“ adrline1”,则其他值则没有。

并且我正在尝试如下XPath Exression。

"/Term[@Name='adrtype' and @Value='House']/Term[@Name='adrline1' ]/@Value"

但是我没有任何价值。

2 个答案:

答案 0 :(得分:0)

如果XML结构与给定的输入相同,则您的XPath应该更改为:

//Term[@Name='adrtype' and @Value='House']/following-sibling::Term[@Name='adrline1']/@Value

查看此内容:http://xsltransform.net/jxWYjVB

答案 1 :(得分:0)

首先,我认为您的XML需要这样的结构;

<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.7.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.7.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-core</artifactId>
        <version>1.7.4</version>
        <scope>test</scope>
    </dependency>

之后,您可以使用它来查找和获取值。请记住使用<Terms> <Term Value="1025" Name="dnumber"/> <Term Value="House" Name="adrtype"/> <Term Value="My Address line 1" Name="adrline1"/> <Term Value="My Address line 2" Name="adrline3"/> <Term Value="12345" Name="adrpstcode"/> <Term Value="07" Name="adrareacod"/> <Term Value="123456789" Name="adrphone"/> <Term Value="987654321" Name="adrmobile"/> <Term Value="PARENT" Name="adrcntrel"/> </Terms> 运算符在这种情况下很方便。此外,使用this之类的XPath测试器可以帮助您节省以后的时间。

|