需要帮助编写xpath来获取值

时间:2014-07-04 06:52:56

标签: xpath

我有一个XMl,其中有多行,我必须从行单元格中取值,具体取决于同一行中不同单元格中的值

<row bandingIndex="" isDirty="false" odfPk="5001001" >
   <cell id="selector" type="checkbox">
      <data value="5001001"/>
   </cell>
   <cell isDirty="false" isTsv="" nowrap="true" type="label">
      <label value="1234project_1234"/>
      <data id="id" value="5001001"/>
      <data id="returnAction" value="projmgr.organizerTaskListReturn"/>
      <data id="projectId" value="5001001"/>
      </action>
   </cell>
   <cell isDirty="false" isTsv="" nowrap="true" type="label">
      <tip value="1234project"/>
      <action actionId="projmgr.orgTask2ProjectLink" id="projmgr.orgTask2ProjectLink" type="url">
         <label value="1234project"/>
         <data id="taskId" value="5001001"/>
         <data id="id" value="5001001"/>
      </action>
   </cell>
</row>

在上面的示例中,我必须从具有id = 'selector'的第一个单元格/数据/值中获取值,具体取决于cell/tip[@value='1234project'],而不对单元格的索引进行硬编码。

/row/cell/data/@value总是返回第一行值,但我会有多行。

2 个答案:

答案 0 :(得分:0)

您可以选择cell tip[@value='1234project'] preceding-sibling::cell,然后使用<cell id="selector">转到相应的data/@value。从这一点开始,您可以轻松获得相应的/row/cell[tip[@value = '1234project']]/preceding-sibling::cell[@id='selector']/data/@value 。完整的XPath:

{{1}}

答案 1 :(得分:0)

您应首先将选择范围缩小到正确的row ...

/row[cell/tip/@value='1234project']

然后选择正确的cell ...

cell[@id='selector']

然后选择data/@value

完成XPath:

/row[cell/tip/@value='1234project']/cell[@id='selector']/data/@value