如何将WebView2文档加载到HtmlAgilityPack中

问题描述 投票:0回答:1

我不知道如何将 WebView2 文档加载到 HTML Agility Pack 中。我正在使用 JavaScript 来获取字符串形式的 DOM。但是,当我将 DOM 字符串加载到 HtmlAgilityPack 文档中时,每次尝试解析它都会返回 null。

编译:

string dom = await webView21.CoreWebView2.ExecuteScriptAsync("document.body.outerHTML"); // Get the DOM with JavaScript
if (dom.Contains("div"))
   System.Diagnostics.Debug.WriteLine("At least one div in the DOM"); // Prints

HtmlAgilityPack.HtmlDocument htmlDocument = new HtmlAgilityPack.HtmlDocument();
htmlDocument.LoadHtml(dom);
var divs = htmlDocument.DocumentNode.SelectNodes("//div");
if (divs == null)
   System.Diagnostics.Debug.WriteLine("divs is null"); // Prints

当我运行此代码片段时,第一个 if 子句确认字符串 dom 至少包含一个 div。但是,当字符串加载到 htmlDocument 中时,第二个 if 子句显示变量 divs 为 null。变量 div 的计数应该至少为 1。我正在做一些愚蠢的事情,但我不知道是什么。

javascript c# dom html-agility-pack webview2
1个回答
0
投票

使用 JavaScript 获取 DOM 会在字符串 dom 中留下 unicode 字符,即。 \u003C。获取 DOM 后,可以使用

删除它们
dom = System.Text.RegularExpressions.Regex.Unescape(dom);

这回答了问题。

顺便说一句,使用“documentElement”而不是“body”可以获得更多的 dom,即。

string dom = await webView.ExecuteScriptAsync("document.documentElement.outerHTML"); // Get the DOM with JavaScript
© www.soinside.com 2019 - 2024. All rights reserved.