C#HtmlAgilityPack HtmlNodeCollection SelectNodes不工作

c# html html-agility-pack selectnodes xpath

這是我正在使用的代碼行,當我在監視窗口中查看時,'c'為空。

HtmlNodeCollection c = doc.DocumentNode.SelectNodes("//*[@id=\"content\"]/table/tbody/tr[2]/td/center[2]/b");

但是當我將'c'聲明為此時,監視窗口會將其顯示為有效的HtmlNodeCollection

HtmlNodeCollection c = new HtmlNodeCollection(doc.DocumentNode.ParentNode);

如果我然後將'c'設置為第一個代碼片段,它將返回null。

我知道XPath是正確的,因為我從Chrome Inspect Element中獲取了我想要的元素。

熱門答案

如果未找到任何內容,SelectNodes將返回null。

您認為您的XPATH是可以的,因為您使用了瀏覽器(Chrome,Firefox等)構建的XPATH,但不幸的是,這個XPATH與您從網絡(或文件或原始流)獲得的XPATH不完全相同。

瀏覽器依賴於內部使用的內存中的DOM,這可能會有很大的不同。這就是為什麼你會看到TBODY之類的元素只存在於DOM中,而不是存在於標記中(它們是可選的)。

所以,我建議你回到你給Html Agility Pack的字符串/流,然後再次檢查XPATH。我打賭沒有TBODY,一開始。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow