HTML code:
<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;
}
我得到了什么: CAR
我需要得到:
CAR
汽车是你可以驾驶的东西。
有什么建议吗? 我尝试添加下一个节点,但我给了NullReferenceExceptions: “// b [contains(text(),'CAR')/ br]”和“// b [contains(text(),'CAR')/ br / br]”
提前致谢。 PS.I我想避开Regex ..
答案 0 :(得分: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.