使用HTMLAgilityPack和XPath獲取childNodes的問題

c# html-agility-pack xpath

我試圖解析以下HTML。我需要在h4標籤下獲取值為“Title”的所有鏈接的innertext。

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

我可以使用以下代碼獲取h4元素:

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

嘗試獲取節點時出現問題。我嘗試了以下代碼但沒有效果:

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

一般承認的答案

從我可以收集到的,我認為它不起作用,因為您正在使用的xpath期望節點是您的h4節點的子節點,我沒有測試過這個,並且可能缺少解釋您的要求但是......

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

這將獲得在h4節點的第一個兄弟節點中找到的所有節點。因此,在您的示例HTML中,它應該獲取ul節點中的所有節點

希望這可以幫助




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因