我正在处理HtmlDocument并希望在标记之间获取文本:
<span>Location:</span><br/>
50 Airport Road<br/>
Ottawa, CA <br/><br/>
<span>Latitude / Longitude:</span><br/>
40.32083 / -71.67275<br/><br/>
我想要两件事:
如何做到这一点。 提前致谢。 我的英语不好请忽略。
答案 0 :(得分:8)
使用包含DOM解析器的HTML Agility Pack - 永远不值得为HTML编写自己的解析器或RegExs。
http://www.nuget.org/packages/HtmlAgilityPack
在下面的示例中,您可以看到使用XPATH选择元素是多么容易。因为您想要的值实际上不在元素中,所以我使用text()
来获取它们。
如果这是较大文档的一部分,您可以扩展XPATH以反映它们在更广泛的文档中的位置。
string html = @"<span>Location:</span><br/>
50 Airport Road<br/>
Ottawa, CA <br/><br/>
<span>Latitude / Longitude:</span><br/>
40.32083 / -71.67275<br/><br/>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
// Getting an element (Location:)
var latLongLabel = doc.DocumentNode.SelectSingleNode("span[2]");
// The location is split over two text nodes
var locationValA = doc.DocumentNode.SelectSingleNode("text()[1]").InnerHtml.Trim();
var locationValB = doc.DocumentNode.SelectSingleNode("text()[2]").InnerHtml.Trim();
// The lat long
var latLongVal = doc.DocumentNode.SelectSingleNode("text()[4]").InnerHtml.Trim();