2016-03-25 5 views
0

i Daten von meiner XML-Datei angezeigt werden soll und
das ist meine XML-Datei wie einen Text von XPath in C# erhalten

<table> 
 
    <tr class="even"> 
 
\t <td class="ltid">1</td> 
 
\t <td class="ltn">لستر سیتی</td> 
 
\t <td class="ltg">31</td> 
 
\t <td class="ltw">19</td> 
 
\t <td class="ltd">9</td> 
 
\t <td class="ltl">3</td> 
 
\t <td class="ltgf">54</td> 
 
    <td class="ltga">31</td> 
 
    <td class="ltgd" dir="ltr">+23</td> 
 
    <td class="ltp">66</td> 
 
    </tr> 
 
    <tr> 
 
    <td class="ltid">2</td> 
 
    <td class="ltn">تاتنهام</td> 
 
    <td class="ltg">31</td> 
 
    <td class="ltw">17</td> 
 
    <td class="ltd">10</td> 
 
    <td class="ltl">4</td> 
 
    <td class="ltgf">56</td> 
 
    <td class="ltga">24</td> 
 
    <td class="ltgd" dir="ltr">+32</td> 
 
    <td class="ltp">61</td> 
 
    </tr> 
 
    <tr> 
 
    <td class="ltid">3</td> 
 
    <td class="ltn">آرسنال</td> 
 
    <td class="ltg">30</td> 
 
    <td class="ltw">16</td> 
 
    <td class="ltd">7</td> 
 
    <td class="ltl">7</td> 
 
    <td class="ltgf">48</td> 
 
    <td class="ltga">30</td> 
 
    <td class="ltgd" dir="ltr">+18</td> 
 
    <td class="ltp">55</td> 
 
    </tr> 
 
</table>

und ich will das dritte Team bekommen, so
ich möchte erhalten '<td class="ltid">3</td>' und dies ist der Code i

versucht
 var doc = XDocument.Parse(richTextBox2.Text); 
     var navigator = doc.CreateNavigator(); 
     var contentCell = navigator.SelectSingleNode("//td[@class='ltid']"); 
     txtTeam.Text = contentCell.Value; 

, aber ich weiß nicht, wie die dritte zu bekommen td mit dieser Klasse Wert
i für finden eine Antwort gesucht, aber ich konnte nicht antworten
und ich schrieb einen anderen Code, bevor diese finden, aber in ersten <tr> haben wir 3 so einfach finden, dass von dem ersten <tr> nicht die dritten <tr>
bitte helfen Sie uns Wert von dritten <tr>

Antwort

0

Dies ist eine Möglichkeit zu bekommen:

(//td[@class='ltid'])[3] 

die XPath das dritte Auftreten von td[@class='ltid'] aus dem gesamten XML-Dokument zurück.

+0

es sagen: Zusätzliche Informationen: '// td [@ class =' ​​LTID ']) [3] 'hat ein ungültiges Token. – Avenger

+0

Sie verpassten die öffnenden Klammern "(' zu Beginn: '(// td [@ class = 'ltid']) [3]' – har07

+0

es funktionierte, aber es von der ersten 'tr' wieder nicht die dritte 'tr – Avenger

0

Es gibt drei Möglichkeiten, wie Sie dies tun könnte:

xpath 1: //tr[3]/td[@class='ltid'] 
xpath 2: //td[@class='ltid'])[3] 
xpath 3: //td[contains(text()='3')] 
+0

das Problem ist '3' ist bereits in der ersten tr und auf diese Weise nur zurück 3 von der ersten tr nicht die dritte tr – Avenger

+0

Ah sorry sah das nicht, Sie könnten dann versuchen, // tr [3]/td [enthält (@ Klasse, 'ltid') und enthält (text(), '3')]. Hast du den ersten xath dort versucht? Das sollte für das funktionieren, wonach Sie suchen. Vielleicht möchten Sie Firebug/Firepath herunterladen, welches ein Firefox-Plugin ist, mit dem Sie XPaths automatisch erhalten können – Kristian

0

Sie können versuchen:

var nav = doc.CreateNavigator(); 
XPathNodeIterator iterator = nav.Select("//td[@class='ltid']"); 
while (iterator.MoveNext()) 
{ 
    // do whatever you want with your item 
} 
Verwandte Themen