使用XPATH从不同的节点中选择两个不同的属性

时间:2018-01-09 17:34:23

标签: xml xpath

所以我正在尝试(使用XPATH 2.0之前的环境)从同一搜索结果中选择两个属性...我的数据看起来像(这是课程的摘录)

      <ATHLETES>
        <ATHLETE athleteid="1010" lastname="Doe" firstname="John" gender="M" key="12345">
          <RESULTS>
            <RESULT resultid="1673" time="00:00:31.00" status=""/>

鉴于resultid,我想找到时间,以及更高节点中的密钥。

我可以用
提取resultid和时间 //运动员/运动员/结果/结果[@resultid =&#39; 1673&#39;] / @ * [name()=&#39; time&#39;或name()=&#39; resultid&#39;]&#34 ;; 但是如何进入名为&#34; key&#34;的属性在父母的父节点?

Monathan

1 个答案:

答案 0 :(得分:0)

我无法想到在XPath 1.0中执行此操作的非常干净(非重复)方法,但您可以使用union运算符(|)在单个查询中选择这两个属性:

//ATHLETES/ATHLETE[RESULTS/RESULT/@resultid = '1673']/@key |    
//ATHLETES/ATHLETE/RESULTS/RESULT[@resultid = '1673']/@time