2014-11-04 67 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