2016-04-01 5 views
0

Я использую getFirstByXPath в HtmlTableRow с HtmlUnit, но он не работает должным образом.xPath on HtmlTableRow (HtmlUnit) не работает должным образом

Если я войти в HtmlTableRow asXml()

<tr class="odd"> 
    <td class="picColumn"> 
    <img src="xyz.jpg"/> 
    </td> 
    <td> 

      Half Day Tour to the Rhine - Halbtages-Ausflug zum Rhein 

    </td> 
    <td> 
    <b> 
     Frankfurt am Main 
    </b> 
    <br/> 

      ETS Gmbh &amp; Co. KG 

    </td> 
    <td class="dateColumn"> 

      01.04.2016 
    <br/> 

      15:15 Uhr 

    </td> 
    <td> 
     Ticket 
    </a> 
    </td> 
</tr> 

Тогда я пытаюсь получить доступ к различным значения с row.getFirstByXPath(xpath);, который только в следующем случае штраф: row.getFirstByXPath("//td[@class='dateColumn']");. Если я попытаюсь получить доступ ко второму столбцу с row.getFirstByXPath("//td[2]");, мой результат будет null. Что я делаю не так?

Спасибо!

+0

Я не уверен, что это поможет, но в любом случае вам следует избегать использования селектора '//': это пустая трата ресурсов и боль для поддержания. Попробуйте использовать '/ tr/td [2]'? – Aaron

+0

Я тестировал с '/ tr/td [2]' и '/ tr/td [@ class = 'dateColumn']' прямо сейчас, ни один из них не имеет результата. Теперь оба они null :-( – user3287019

+0

Я не знаком с HtmlUnit, поэтому мой совет XPath может быть не так хорош в вашем случае. Может быть, HtmlTableRow - это не весь XML-документ? – Aaron

ответ

0

//td[2] должен работать с предоставленным вами XML, так что это странно. Можете ли вы попробовать (//td)[2]?

+0

omg '(// td) [2]' работает! Большое спасибо !!! Очень странно, почему '// td [2]' не работает, но в любом случае теперь вы спасли мой день :) – user3287019

+0

You Добро пожаловать! ;-) –