如何使用 Xamarin 表单和 C# 将 Html 数据从网站保存到文本文件
Posted
技术标签:
【中文标题】如何使用 Xamarin 表单和 C# 将 Html 数据从网站保存到文本文件【英文标题】:How to Save Html data from a website to a text file using Xamarin forms and C# 【发布时间】:2021-12-04 11:19:18 【问题描述】:我正在使用 C# 和 Xamarin 表单来创建一个电话应用程序,该应用程序(当按下按钮时)将从网站中提取特定的 html 数据并将其保存到文本文件中(程序可以稍后再次读取) .我从这个视频中的教程开始:https://www.youtube.com/watch?v=zvp7wvbyceo 如果你想看看我是从什么开始的,这是我到目前为止使用这个视频https://www.youtube.com/watch?v=wwPx8QJn9Kk 制作的代码,在创建的“AboutViewModel.cs”文件中视频:
Image link because this is a new account i guess and i cant embed images or something
粘贴代码本身(但图像可以让您更好地了解所有内容):
private Task WebScraper()
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("https://www.flightview.com/airport/DAB-Daytona_Beach-FL/");
foreach (var item in doc.DocumentNode.SelectNodes("//td[@class='c1']"))
var itemstring = item;
File.WriteAllText("AirportData.txt", itemstring);
return Task.CompletedTask;
public ICommand OpenWebCommand get;
public ICommand WebScraperCommand get;
我现在遇到的唯一错误是“无法将 'HtmlAgilityPack.HtmlNode' 转换为 'string'” 我正在努力修复它,但我认为这不是最好的解决方案,所以你拥有的任何东西都是有用的.谢谢:)
【问题讨论】:
【参考方案1】:HtmlNode 是一个对象,而不是一个简单的字符串。您可能想使用 OuterHtml
属性,但请查阅文档以查看这是否适合您的用例
string output = string.Empty;
foreach (var item in doc.DocumentNode.SelectNodes("//td[@class='c1']"))
output += item.OuterHtml;
File.WriteAllText("AirportData.txt", output);
注意,你需要指定一个可写文件夹的路径,应用的根文件夹是不可写的。见https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/data/files?tabs=windows
【讨论】:
这消除了代码中的错误,但是当单击按钮时,我得到了这个: System.NullReferenceException Message=Object reference not set to an instance of an object。我会继续研究它,看看我是否也能解决这个问题。 您需要确定我们是哪一行导致了异常(堆栈跟踪应该向您显示这一点),然后找出哪个项目为空以上是关于如何使用 Xamarin 表单和 C# 将 Html 数据从网站保存到文本文件的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin 表单将 Json 数组转换为 C# 并返回 JSON 数组
Xamarin 表单和 EntityFramework 属性兼容性