[英]On error Console.WriteLine C# HtmlAgilityPack
我是 C# 的新手,發現很難通過 HtmlAgilityPack 搜索 output 的結果。
當找不到請求的搜索時,我想顯示“ Not found
”。
問題是,我不知道該怎么做。 目前,如果我輸入一個不存在的搜索短語,應用程序就會退出。
如何解決?
這是我的代碼:
string exampleurl = "https://example.com";
Console.WriteLine("Checking for text");
htmlDocument = web.Load(exampleurl);
var scanfortext = htmlDocument
.DocumentNode
.SelectSingleNode("//*[text()[contains(., 'Test123')]]")
.InnerText;
Console.WriteLine(scanfortext);
根據文檔,當找不到搜索模式時, SelectSingleNode
的返回值為null
。
返回:第一個與 XPath 查詢匹配的 XmlNode,如果未找到匹配節點,則為 null。
由於您使用內部 html,這將導致NullReferenceException
。 意義; 您試圖訪問未(或空)初始化值。 更改您的代碼以使用條件運算符?
,它null
並且它會工作。
string scanfortext = htmlDocument.DocumentNode
.SelectSingleNode("//*[text()[contains(., 'Test123')]]")?
.InnerText;
if (string.IsNullOrEmpty(scanfortext))
Console.WriteLine("No results");
else
Console.WriteLine(scanfortext);
請注意?
運算符只是用 null 檢查來替代 if 語句。
這部分雖然讓我煩惱:
目前,如果我輸入一個不存在的搜索短語,應用程序就會退出。
看起來您沒有使用調試器來分析您的問題,而只是運行可執行文件。 使用調試器將大大增加您對程序工作原理的理解——如果出現這樣的錯誤:它會非常清楚地告訴您它是什么以及它發生的位置。
一些常見的調試器:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.