2012-01-16 15 views
2

次のHTMLを解析しようとしています。値 "Title"を持つh4タグの下にあるすべてのリンクのinnertextを取得する必要があります。HTMLAgilityPackとXPathを使用してchildNodesを取得する際の問題

<h4>Title</h4> 
    <ul> 
     <li> 
      <a>One</a> 
     </li> 
     <li> 
      <a>Two</a> 
     </li> 
     <li> 
      <a>Three</a> 
     </li> 
    </ul> 

私は、次のコードを使用して、[OK] H4要素を取得することができます:

var links = document.DocumentNode.SelectNodes("//h4[contains(text(),'Title')]"); 

問題は、Aノードを取得しようとしているが付属しています。私は、次のコードを試してみましたが、どれも機能しません:

var urls = member.SelectNodes(".//a"); 

foreach (var url in urls) 
{ 
    Console.WriteLine(url.InnerText); 
} 

答えて

1

私が集めることができるものから、あなたが使用しているxpathが、Aノードは、あなたのH4ノードの子であることを期待しているので、私はそのが動作していないと思うが、私は」これをテストしていないveは、と...あなたの要件の解釈が、欠落している可能性があり

var links = document.DocumentNode.SelectNodes("//h4[contains(text(),'Title')]/following-sibling::*[1]//a"); 

これはH4ノードの最初の兄弟で発見され、Aノードのすべてを得るでしょう。だからあなたの例のHTMLでは、それはulノード内のすべてのノードを取得する必要があります

希望するこれは役に立ちます