2010-11-23 34 views
0

我的XML文件的一部分:XPath的递归

<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 2test无线电更深”的结果,但我只想要“测试radiopart 2”。

我目前使用XPath: EXPR = xpath.compile( “/表/行[@ ID = 'aant'] /收音机[@ ID = 'radaant']/omschrijving”)

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

+0

我不能重现你的问题:你的xpath选择了所需的两个`omschrijving`元素 – 2010-11-23 15:47:57

回答

1

尝试EXPR = xpath.compile( “/表/行[@ ID = 'aant'] /收音机[@ ID = 'radaant'] /子:: omschrijving”)

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> 
+0

我确实是错的,但我现在修好了。在这里,我输入[@ id ='radaant'],但在我的代码中,我没有填写它。谢谢您的帮助 – Frederik 2010-11-24 11:26:23