我有一个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
总是返回第一行值,但我会有多行。
答案 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