2013-05-04 45 views
1

所以基本上我想要過濾掉HTML和保存節點的層次結構。例如,我有這個,我只想要在其層次結構中的類 「B.1.1」 的HTML:HtmlAgilityPack:給定一個HTML文件,我怎麼能得到基於給定的類屬性的節點


<html> 
<div class="a"> 
</div> 
<div class="b"> 
    <div class="b.1"> 
      <div class="b.1.1"> 
       <span>me</span> 
      </div> 
      <div class="b.1.2"> 
      </div> 
    </div> 
</div> 
<div class="c"> 
</div> 
</html> 

結果應該是:


<html> 
<div class="b"> 
    <div class="b.1"> 
      <div class="b.1.1"> 
       <span>me</span> 
      </div> 
    </div> 
<div> 
</html> 

任何想法?

回答

1

你可以寫一個遞歸函數,即雲一路攀升到父節點:

private HAP.HtmlNode FindParentNodeThatContainsClass(string classToFind, HAP.HtmlNode node) 
{ 
    string xPath = string.Format("//*[contains(@class,'{0}')]", classToFind); 
    if (node.SelectNodes(node.XPath + "//" + xPath) != null && node.SelectNodes(node.XPath + "//" + xPath).Count() >= 1) 
    { 
     return node; 
    } 
    else 
    { 
     if (node.ParentNode != null) 
     { 
      var parentNode = FindParentNodeThatContainsClass(xPath , node.ParentNode); 
      return parentNode; 
     } 
     else 
     { 
      return null; 
     } 
    } 
} 

我沒有測試的功能,但應該讓你開始。

相關問題