2014-11-04 68 views
0

我有一个基本的HTML页面。它包括omo地区。相同的类别8不同的内容。HtmlAgilityPack使用类获取ChildNode内容

<div class="omo-page-wrapper"> 
    <div class="omo-part"> 
     <div class="omo-img">...</div> 
     <div class="omo-info"> 
      <div class="r-logo">...</div> 
      <div class="r-content font-hbold"> 
       <i>Content Area 1</i> 
       <em>Content Area 2</em> 
       <a href="/blabla">Href</a> 
      </div> 
     </div> 
    </div> 
    <div class="omo-part"> 
     <div class="omo-img">...</div> 
     <div class="omo-info"> 
      <div class="r-logo">...</div> 
      <div class="r-content font-hbold"> 
       <i>Content Area 1</i> 
       <em>Content Area 2</em>     
       <a href="/blabla2">Href2</a> 
      </div> 
     </div> 
    </div> 
    <div class="omo-part">...</div> 
    <div class="omo-part">...</div> 
    <div class="omo-part">...</div> 
    <div class="omo-part">...</div> 
    <div class="omo-part">...</div> 
    <div class="omo-part">...</div> 
</div> 

我想在所有的R-内容字体hbold的类中的所有内容(我,EM,HREF)。我用foreach,我得到了所有的节点。但我没有ChildNodes ..

HtmlDocument document = new HtmlDocument(); 
document.LoadHtml(html); 

var allElementsWithClassTalkMedallion = document.DocumentNode.SelectNodes("//*[contains(@class,'r-content font-hbold')]"); 

foreach (HtmlNode node in allElementsWithClassTalkMedallion) 
{ 
    dataTable.Rows.Add("i", "em", "href"); //?? 
} 

return promotions; 

8(或更多)相同的类区域,3个孩子节点。我如何获得所有我,他们,HREF内容?非常感谢。

回答

0

一种可能的方式,你可以同时使用SelectSingleNode()获得特定节点分别来自node变量:

foreach (HtmlNode node in allElementsWithClassTalkMedallion) 
{ 
    var i = node.SelectSingleNode("i").InnerText.Trim(); 
    var em = node.SelectSingleNode("em").InnerText.Trim(); 
    var href = node.SelectSingleNode("href").InnerText.Trim(); 
    dataTable.Rows.Add(i, em, href); 
} 
+0

感谢的人,这是工作。 – Ozgur 2014-11-04 10:45:41