XPath递归

时间:2010-11-23 15:21:01

标签: xml xpath recursion

我的xml文件的一部分:

<table>
    <row id="aant">
        <radio id="radaant">
            <omschrijving>test radio</omschrijving>
            <omschrijving>part 2</omschrijving>
            <table>
                <row id="testrow">
                    <radio id="testrad">
                        <omschrijving>test radio deeper</omschrijving>
                        <table/>
                    </radio>
                </row>
            </table>
        </radio>
    </row>
</table>

我想从id =“radaant”的标签广播下获得“omschrijving”。由于“omschrijving”在孩子身上也更深,我总是得到“测试radiopart 2测试无线电更深”,但我只想要“测试radiopart 2”。

我目前正在使用xpath: expr = xpath.compile(“/ table / row [@ id ='aant'] / radio [@ id ='radaant'] / omschrijving”)

如何更改xpath字符串以仅从当前节点获取“omschrijving”?

2 个答案:

答案 0 :(得分:2)

您显然在谈论另一个XML文档或另一个XPath表达式

应用于提供的XML文档

<table>
  <row id="aant">
    <radio id="radaant">
       <omschrijving>test radio</omschrijving>
       <omschrijving>part 2</omschrijving>
       <table>
          <row id="testrow">
            <radio id="testrad">
              <omschrijving>test radio deeper</omschrijving>
              <table/>
            </radio>
          </row>
       </table>
    </radio>
  </row>
</table>

您的XPath表达式

/table/row[@id='aant']/radio[@id='radaant']/omschrijving

精确选择所需节点

<omschrijving>test radio</omschrijving>
<omschrijving>part 2</omschrijving>

答案 1 :(得分:1)

try expr = xpath.compile(“/ table / row [@ id ='aant'] / radio [@ id ='radaant'] / child :: omschrijving”)