NextSibling的内容未打印出来

时间:2013-04-19 22:11:22

标签: c# winforms html-agility-pack

我有这段代码,我无法弄清楚为什么它不打印出下一个容器的内容。

     HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
     doc.Load("Billing106.htm");

     foreach (HtmlNode div in doc.DocumentNode.SelectNodes("//div[starts-with(., ' SEMANTIC:')]"))
     {
        richTextBox1.Text += "SC: " + div.NextSibling.InnerText.ToString();
     }

我在HTML文件中有几个条目如下:

    <div style="top: 232px; left: 332px;" class="S4"> SEMANTIC:</div>
    <div style="top: 233px; left: 377px;" class="S3"> SBR02 specifies the relationship to the person insured.</div>

我无法检查class =“S3”,因为有多个项目使用同一个类。

如果有人知道如何让它发挥作用,我将非常感激,因为我想回家享受我的周末,我一定会送你一个电子啤酒,呵呵。

注意:它打印出3次“SC:”它在文档中出现3次。

1 个答案:

答案 0 :(得分:1)

那是因为这个DIV元素的下一个兄弟不是另一个DIV,而是两个DIV之间的文本(是的,它们也是节点)。如果您想要DIV类型的下一个兄弟,那么您应该这样做:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
     doc.Load("Billing106.htm");

 foreach (HtmlNode div in doc.DocumentNode.SelectNodes("//div[starts-with(., ' SEMANTIC:')]"))
 {
    richTextBox1.Text += "SC: " + div.SelectSingleNode("following-sibling::div").InnerText.ToString();
 }

有关XPATH轴的说明,请参阅此处:XPATH Axes