html agility pack獲取t的下一個tr的innertext

c# html-agility-pack xpath

我在使用html敏捷包時遇到了一些問題我在一個或多個表中隨機生成了相同類=“相關新聞”的trs但是它們不一定是彼此跟隨的,並且大部分時間都有trs與他們之間沒有課。我想要做的是獲取沒有類的那些trs的td的innerText並將它們放在一個數組中,同時將tr class =“related-news”放在它們正上方

這是html

<tr class="related-news">
   <td>some text</td>
   <td>some text</td>
   <td>some text</td>
</tr>
<tr class="">
   <td>some text</td>
   <td>some text</td>
   <td>some text</td>
</tr>
<tr class="">
   <td>some text</td>
   <td>some text</td>
   <td>some text</td>
</tr>
<tr class="">
   <td>some text</td>
   <td>some text</td>
   <td>some text</td>
</tr>
<tr class="related-news">
   <td>some text</td>
   <td>some text</td>
   <td>some text</td>
</tr>
<tr class="">
   <td>some text</td>
   <td>some text</td>
   <td>some text</td>
</tr>
<tr class="related-news">
   <td>some text</td>
   <td>some text</td>
   <td>some text</td>
</tr>

沒有辦法知道在課程“相關新聞”之間會有多少沒有課程的課程需要獲得所有tds的內部文本我沒有任何問題,因為問題是每次都將它們分開我通過班級“相關新聞”到達tr

像這樣的東西:

如果這個tr有類“相關新聞”得到這個tr的ts的innertext和下一個tne的innertext而他們沒有類“相關新聞”如果達到“相關新聞”類的tr創建一個新的arrey和繼續

這是否可能與HTML敏捷包?

我用這段代碼得到每個td的innertext:

HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//tr[@class='related-news']/td");
        foreach (HtmlNode node in nodes2)
        {
            string Text = node.InnerText;
        }

我不知道如何繼續或添加條件

熱門答案

這只是一個非常常見的操作的表現:通過順序列表和組合事物。

基本思想是獲得所有 <tr>節點,而不僅僅是“相關新聞”節點。然後,您瀏覽列表並將它們分組。下面的偽代碼顯示了它是如何完成的。

List<string> TextLines = new List<string>();
StringBuilder sb = new StringBuilder();
foreach (var node in nodes)
{
    if node class == "related-news"
    {
        // we've found a new "related-news" node.
        // add the previous stuff to the list
        if (sb.Length > 0)
            TextLines.Add(sb.ToString());
        sb = new StringBuilder(node.InnerText);
    }
    else
    {
        sb.Append(node.InnerText);
    }
}
// and don't forget the last one
if (sb.Length > 0)
    TextLines.Add(sb.ToString());

請注意,代碼只關心具有“related-news”類的<tr>標籤和不具有“related-news”類的標籤。如果您要對其他類進行不同的分組,則必須修改代碼。



Related

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