2016-04-01 7 views
0

Ich verwende getFirstByXPath auf einer HtmlTableRow mit HtmlUnit, aber es funktioniert nicht richtig.xPath auf HtmlTableRow (HtmlUnit) funktioniert nicht richtig

Wenn ich die HtmlTableRow asXML log()

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

Dann versuche ich, verschiedene Werte mit row.getFirstByXPath(xpath); zuzugreifen, die nur fein in folgenden Fall: row.getFirstByXPath("//td[@class='dateColumn']");. Wenn ich versuche, mit row.getFirstByXPath("//td[2]"); auf die zweite Spalte zuzugreifen, ist mein Ergebnis null. Was mache ich falsch?

Vielen Dank!

+0

Ich bin nicht sicher, dass dies helfen würde, aber in jedem Fall sollten Sie vermeiden, den '//' Selektor zu verwenden: es ist eine Verschwendung von Ressourcen und ein Schmerz zu pflegen. Hast du es mit '/ tr/td [2]' versucht? – Aaron

+0

Ich habe mit '/ tr/td [2]' und '/ tr/td [@ class = 'dateColumn']' gerade getestet, keiner von ihnen hat ein Ergebnis. Jetzt sind beide null :-( – user3287019

+0

Ich bin nicht vertraut mit HtmlUnit, so dass mein XPath-Rat möglicherweise nicht so gut in Ihrem Fall ist. Vielleicht ist die HtmlTableRow nicht das ganze XML-Dokument? – Aaron

Antwort

0

//td[2] sollte an der XML arbeiten, die Sie zur Verfügung gestellt, so ist dies seltsam. Können Sie versuchen (//td)[2]?

+0

omg '(// td) [2]' funktioniert! Vielen Dank !!! Es ist wirklich seltsam, warum die '// td [2]' nicht funktioniert, aber trotzdem hast du jetzt meinen Tag gerettet :) – user3287019

+0

Du 'Du bist willkommen! ;-) –