0

HTML 代码:

 <b> CAR </b>
    <br></br>
  Car is something you can drive.
    <br></br>
    <br></br>

C#代码:

        HtmlAgilityPack.HtmlDocument doc = new HtmlWeb().Load("http://website.com/x.html");

        if (doc != null)
        {
            HtmlNode link = doc.DocumentNode.SelectSingleNode("//b[contains(text(), 'CAR')]");

            webBrowser1.DocumentText = link.InnerText;
            webBrowser1.AllowNavigation = true;

            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Visible = true;
        }

我设法得到:汽车

我需要得到:
汽车
汽车是你可以驾驶的东西。

有什么建议么?我尝试添加下一个节点,但我给了 NullReferenceExceptions : "//b[contains(text(), 'CAR')/br]" 和 "//b[contains(text(), 'CAR')/br /br]"

提前致谢。PS.我想避免使用正则表达式..

4

1 回答 1

0

XPATH 区分大小写(有关更多信息,请参见此处:Is it possible to ignore case using xpath and c#?)加上包含“Car”的第二个短语不是 B 元素的子元素。你可以让它像这样工作:

HtmlDocument doc = new HtmlWeb().Load("http://website.com/x.html");
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'car')]"))
{
    Console.WriteLine(node.InnerText);
}

在控制台应用程序中,它将输出以下内容:

 CAR

  Car is something you can drive.
于 2013-05-10T10:01:36.640 回答