2012-11-19 43 views
1

我正在使用HTMLAgilityPack。我有這樣的事情:找到沒有孩子的節點。如果它有任何<span>孩子,請忽略它

<div class="address"> 
    <h3>Postadress</h3> 
    <div class="box-address">Box 27 </div> 
    <div class="post-address"> 
    16493 KISTA 
    </div> 
</div> 

問題是還有其他<div class="address"> s。 所以我必須找到一個具有<h3>孩子的文本「Postaddress」。 我需要提取的是值爲<div class="post-address">即「16493 KISTA」。 還有其他記錄返回<div class="post-address">有孩子,我不希望這些被返回。我只尋找<div class="post-address">沒有孩子,只包含裸體的文字。

我的解決方案迄今:

var postAddressdiv = doc.DocumentNode.SelectNodes("//div[@class='address']"); 
if (postAddressdiv != null) 
{ 
    foreach (HtmlAgilityPack.HtmlNode node in postAddressdiv) 
    { 
     HtmlNode postAddress; 
     var h3 = node.Descendants("h3"); 
     if (h3 != null) 
     { 
      if (h3.First().LastChild.InnerHtml == "Postadress") 
      { 
       MessageBox.Show("right place you are."); 
       postAddress = node.SelectSingleNode("//div[@class='post-address']"); 
       var postAddressChildren = postAddress.Descendants(); 
       if (postAddressChildren == null) 
        MessageBox.Show("found one!!!!"); 
      } 
     } 
    } 
} 

但它不工作。我究竟做錯了什麼?謝謝。

+0

爲什麼它「不工作」? – Default

回答

1
var nodes = doc.DocumentNode 
      .SelectNodes("//div[@class='address' and h3='Postadress']/div[@class='post-address']"); 
+1

謝謝!正確! – Disasterkid

相關問題