C#/ Html Agility pack錯誤“值不能為null。參數名稱:Source。”

c#-4.0 html-agility-pack

我之前使用過html agility pack,並且通過一些試驗和錯誤獲得了良好的結果。我正在嘗試使用它來返回一個帶有xpath的節點集,右鍵單擊Firefox中的“Copy XPath”。我做了一些搜索,我發現瀏覽器通常會為表標籤添加“tbody”。我嘗試了刪除它沒有運氣。這是Firefox給我的xpath:

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]

使用它作為 - 拋出錯誤:“ 值不能為空。參數名稱:源。

這發生在線:

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]

我將繼續閱讀,與此同時,如果這對任何人來說都是一個簡單的解決方案,我會很感激。

更新:這是實際代碼:

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]

熱門答案

看來這行出現了這個錯誤:

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();

問題是,如果SelectNodes方法沒有通過xpath表達式找到節點,則返回null 。您可以在此答案中找到類似問題HTML Agility Pack Null Reference的更多信息。然後在null對像上調用ToList()方法,這實際上會導致NullReferenceException

為避免這種情況,請將此變量檢查為null如下所示:

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();



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