Windows 8 Runtime/Store应用程序中的HTML处理
本文关键字:HTML 处理 应用程序 Store Runtime Windows | 更新日期: 2023-09-27 18:29:51
我有一个包含HTML的string
,我需要在Windows 8 Store应用程序中解析它System.Windows.Forms.HtmlDocument不可用于商店应用程序。我只需要提取一些页面链接,图像链接和一些文本内容。
我想我可以使用regexp进行快速&肮脏的解决方案,但必须有更好的方法。解析应该是健壮的,即使HTML有点破损或不标准,也不能拒绝整个字符串。谷歌搜索提供了一些替代方案,但我发现结果没有结论,我希望有人能给出一个直接的答案(或答案列表)。一些代码会很好,或者只是一个链接到SO答案的好代码。
一些需要澄清的代码:
public async void doSomeHtmlStuff(string url) {
System.Net.Http.HttpClient client = new HttpClient();
string html = await client.GetStringAsync(url);
// parse the html, how?
// NOT anything like this, document tree is needed for context
var links = Regex.Matches(html, "<a''s*href=.*>.*</a>");
}
虽然这会增加应用程序的开销,但如果可能的话,我建议您实际将HTML加载到WebView
中,并通过InvokeScript
(docs)方法使用DOM访问来访问DOM并执行任何必要的搜索。IE的HTML解析器是宽容的,几乎可以处理你扔给它的任何HTML
如果需要,可以使用NavigateToString
(docs)加载HTML。
我建议使用这种技术的原因是,考虑到HTML5不需要格式良好(如XHTML),您可能会遇到各种奇怪的情况,这些情况会使DOM的可靠解析变得非常困难,尤其是如果您需要在搜索中保留DOM的结构。
我(或我所在的团队)过去曾为C#使用过一些DOM解析库,但发现它们都缺乏健壮性。如果您正在解析一组非常固定的HTML,您可能会发现其中一个非常有用。
直到最近,谷歌才宣布发布他们的Gumbo库,这是一个用C编写的纯HTML5解析器(当然对你没有帮助)。