簡體   English   中英

錯誤 Console.WriteLine C# HtmlAgilityPack

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM