NextSibling的内容没有打印出来

本文关键字:打印 NextSibling | 更新日期: 2023-09-27 18:10:01

我有这段代码,我不明白为什么它不打印出下一个容器的内容。

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

NextSibling的内容没有打印出来

这是因为这个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轴