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>");
}

Windows 8 Runtime/Store应用程序中的HTML处理

虽然这会增加应用程序的开销,但如果可能的话,我建议您实际将HTML加载到WebView中,并通过InvokeScript(docs)方法使用DOM访问来访问DOM并执行任何必要的搜索。IE的HTML解析器是宽容的,几乎可以处理你扔给它的任何HTML

如果需要,可以使用NavigateToString(docs)加载HTML。

我建议使用这种技术的原因是,考虑到HTML5不需要格式良好(如XHTML),您可能会遇到各种奇怪的情况,这些情况会使DOM的可靠解析变得非常困难,尤其是如果您需要在搜索中保留DOM的结构。

我(或我所在的团队)过去曾为C#使用过一些DOM解析库,但发现它们都缺乏健壮性。如果您正在解析一组非常固定的HTML,您可能会发现其中一个非常有用。

直到最近,谷歌才宣布发布他们的Gumbo库,这是一个用C编写的纯HTML5解析器(当然对你没有帮助)。