2013-03-19 143 views
0

我想收集所有的標籤從這個div,但不知道如何使用XPath方法與HTML敏捷包解析HTML

<div class="biz_info"> 
    <h3><a href="/profil/78122/s%C3%B8rby-rehab/">Sørby Rehab</a></h3> 
    <table class="string_14"> 
     <tbody> 
      <tr> 
       <td>Postadr.:</td> 
       <td class="tab_space">Rognerudveien 8 B, 0681 Oslo</td> 
      </tr> 

      <tr> 
       <td>Telefon:</td> 
       <td class="tab_space">928 70 700</td> 
      </tr> 

      <tr> 
       <td>Nettside:</td> 
       <td class="tab_space"><a href="http://www.sorby-rehab.no" target="_blank">www.sorby-rehab.no</a></td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

今天我的代碼看起來像這樣的最佳方式做到這一點(但很不好):

HtmlDocument doc = new HtmlDocument(); 
doc.Load(new StringReader(result)); 
HtmlNode root = doc.DocumentNode; 

List<string> anchorTags = new List<string>(); 

foreach (HtmlNode link in root.SelectNodes("//@class=biz_info")) 
{ 
    string att = link.OuterHtml; 
    anchorTags.Add(att); 
} 

是xpath專業人士可以幫助我嗎?

回答

0
HtmlDocument html = new HtmlDocument(); 
html.Load(new StringReader(result)); 
var anchorTags = html.DocumentNode.SelectNodes("//div[@class='biz_info']//a") 
        .Select(a => a.OuterHtml) 
        .ToList(); 

這將給你錨定標記html的列表。如果你只需要網址:

urls = html.DocumentNode.SelectNodes("//div[@class='biz_info']//a[@href!='']") 
      .Select(a => a.Attributes["href"].Value) 
      .ToList(); 
+0

我該怎麼做,如果我想循環了這一點?因爲「biz-info」大約有20件? :) – Max 2013-03-19 14:19:53

+0

@Mrmaxen使用循環,例如與* foreach *:'foreach(字符串a在錨標籤){...}' – 2013-03-19 14:22:31

+0

@lazyberzosky,現在,我試圖建立你的模型,但它不工作。我想要的目標是獲得所有biz_info和基因rara他們到XML文件。如果狗屎能夠幫助我一點,那會很好。這裏的代碼:http://pastebin.com/sS8UVts8 – Max 2013-03-19 14:32:51