使用Html Agility Pack解析表

c# html-agility-pack

我有一張桌子

<table>
        <tr class="odd">
        <td class="ind gray">1</td>
        <td><b>acceding</b></td>
        <td class="transcr">[əksˈiːdɪŋ]</td>
        <td class="tran">присоединения</td>
      </tr>
<!-- .... -->
        <tr class="odd">
        <td class="ind gray">999</td>
        <td><b>related</b></td>
        <td class="transcr">[rɪlˈeɪːtɪd]</td>
        <td class="tran">родственный</td>
      </tr>
</table>

我想在一行中解析三個“td”。我的代碼

<table>
        <tr class="odd">
        <td class="ind gray">1</td>
        <td><b>acceding</b></td>
        <td class="transcr">[əksˈiːdɪŋ]</td>
        <td class="tran">присоединения</td>
      </tr>
<!-- .... -->
        <tr class="odd">
        <td class="ind gray">999</td>
        <td><b>related</b></td>
        <td class="transcr">[rɪlˈeɪːtɪd]</td>
        <td class="tran">родственный</td>
      </tr>
</table>

和解析功能

<table>
        <tr class="odd">
        <td class="ind gray">1</td>
        <td><b>acceding</b></td>
        <td class="transcr">[əksˈiːdɪŋ]</td>
        <td class="tran">присоединения</td>
      </tr>
<!-- .... -->
        <tr class="odd">
        <td class="ind gray">999</td>
        <td><b>related</b></td>
        <td class="transcr">[rɪlˈeɪːtɪd]</td>
        <td class="tran">родственный</td>
      </tr>
</table>

在我的方法TryParseWord中,我只有第一行的值。如何解決這個問題?

一般承認的答案

我可以很容易地獲得這些價值

 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
 doc.LoadHtml(html);

 var table = doc.DocumentNode
            .Descendants("tr")
            .Select(n => n.Elements("td").Select(e => e.InnerText).ToArray());

用法:

 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
 doc.LoadHtml(html);

 var table = doc.DocumentNode
            .Descendants("tr")
            .Select(n => n.Elements("td").Select(e => e.InnerText).ToArray());

熱門答案

您必須更改XPath,以便它從一開始就不匹配。喜歡這個:

node.SelectNodes(".//td")[1]

該點告訴XPath僅匹配當前節點。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因