2014-09-10 93 views
-7

我工作的HTMLDocument,并希望得到标签之间的文本:查找HTML标签之间的文本

<span>Location:</span><br/>         
50 Airport Road<br/> 
Ottawa, CA <br/><br/> 
<span>Latitude/Longitude:</span><br/> 
40.32083/-71.67275<br/><br/> 

我想两件事情:

  • 50机场路 渥太华,CA
  • 45.32083/-75.672775

如何做到这一点。 在此先感谢。 我的英语不好,请忽略。

+9

你有没有试过要求Google教授博士帮忙? – Marco 2014-09-10 13:27:38

回答

8

使用HTML Agility Pack,其中包括一个DOM解析器 - 它永远不值得为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(); 
+2

我觉得它很好评,但答案应该也包含例子。 – 2014-09-10 13:29:29

+0

我已经添加了一个具体的例子。 – Fenton 2014-09-10 13:50:18