获取子标签具有属性x的属性

时间:2013-03-27 10:17:01

标签: java xml xpath

考虑这个XML文件结构

...
<sometag attr="foobar">
    <subtag>
        <subsubtag someattr="foo" />
        <subsubtag someattr="bla" />
        <subsubtag someattr="bar" />
    </subtag>
</sometag>
...

目前我有这个XPath查询:/sometag/subtag/subsubtag[@someattr='foo']它给我这些子标签。是否可以从此查询中获取attr="foobar"?所以我希望attr中的所有sometag都有subsubtag someattr="foo"。{/ p>

3 个答案:

答案 0 :(得分:2)

我刚刚发现的另一种可能性:

/sometag/subtag/subsubtag[@someattr='foo']/../../@attr

您可以使用..选择父节点。你需要进入hirachie并选择属性。

答案 1 :(得分:1)

在xml文件中:

<root>
<sometag attr="foobar1"> 
  <subtag> 
    <subsubtag someattr="foo"/>  
    <subsubtag someattr="bla"/>  
    <subsubtag someattr="bar"/> 
  </subtag> 
</sometag>
<sometag attr="foobar2"> 
  <subtag> 
    <subsubtag someattr="foo"/>  
    <subsubtag someattr="bla"/>  
    <subsubtag someattr="bar"/> 
  </subtag> 
</sometag>
<sometag attr="foobar3">
    <subtag>
        <subsubtag someattr="f2342oo" />
        <subsubtag someattr="bla" />
        <subsubtag someattr="bar" />
    </subtag>
</sometag>
</root>

尝试:

/root/sometag/subtag/subsubtag[@someattr='foo']/../../@attr

我对here进行了快速测试,似乎对我有用。

答案 2 :(得分:1)

/sometag[subtag/subsubtag[@someattr="foobar"]]/@attr

或更不严格:

  

// sometag [// subsubtag [@ someattr = “foobar的”]] / @ ATTR