2010-11-23 2 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> 

Я хотел бы получить «omschrijving» из-под тегом радио с идентификатором = «radaant». Поскольку «omschrijving» также глубже у ребенка, я всегда получаю «test radioopart 2test radio deeper» в результате, но я просто хочу «test radiopart 2».

Я в настоящее время с помощью XPath: ехрг = xpath.compile ("/ таблица/строка [@ ид = 'aant']/радио [@ ид = 'radaant']/omschrijving")

Как могу ли я изменить свою строку xpath, чтобы получить только «omschrijving» из текущего узла?

+0

Я не могу воспроизвести вашу проблему: ваш xpath выбирает нужные два элемента `omschrijving` – 2010-11-23 15:47:57

ответ

1

попробовать выр = xpath.compile ("/ таблица/строка [@ ид = 'aant']/радио [@ ид = '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