如何使用 WebView2 控件对本地文件执行 XML/XSL 转换?

Posted

技术标签:

【中文标题】如何使用 WebView2 控件对本地文件执行 XML/XSL 转换?【英文标题】:How can you perform a XML / XSL transformation for local files with the WebView2 control? 【发布时间】:2021-07-10 09:39:07 【问题描述】:

Microsoft Edge(以及 WebView2 控件)允许我们导航到转换为 html 文件的 XML 文件。但是,当 XML 文件位于 PC 本地时,这不起作用。

我很感激我们可以创建一个本地 Web 服务器并使用 localhost,但这是很多工作。 CHtmlView 控件没有这个问题。


我注意到一个类似的问题How to use WebView2 to display XML content using XSL transforms?,但它与 WPF 有关。毫无疑问,WebView2 对象可以使用相同的选项。

【问题讨论】:

【参考方案1】:

我在WebView2 GitHub 网站上进行了讨论,并找到了解决方案。

您需要使用命令行选项--allow-file-access-from-files,然后允许使用本地XML 链接。调用 Microsoft Edge 时,您只需在命令行中传递它。但这就是您使用 WebView2 控件的方式:

void CWebBrowser::InitializeWebView()

   CloseWebView();

   CString subFolder = GetInstallPath();
   CString appData = GetUserDataFolder();

   auto options = Microsoft::WRL::Make<CoreWebView2EnvironmentOptions>();
   CHECK_FAILURE(options->put_AdditionalBrowserArguments(L"--allow-file-access-from-files"));

   HRESULT hr = CreateCoreWebView2EnvironmentWithOptions(
       subFolder,
       appData,
       options.Get(),
       Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(
           this,
           &CWebBrowser::OnCreateEnvironmentCompleted).Get());

   if (!SUCCEEDED(hr))
   
      CString text;
      if (hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND))
      
         text = L"Cannot found the WebView2 component.";
      
      else
      
         text = L"Cannot create the webview environment.";
      

      ShowFailure(hr, text);
   

上面的 sn -p 显示了如何使用CoreWebView2EnvironmentOptions 参数。

【讨论】:

我在创建 CoreWebView2EnvironmentOptions 对象时遇到问题。错误 C2065 'CoreWebView2EnvironmentOptions':未声明的标识符 可能是什么问题? CoreWebView2EnvironmentOptions 类在哪里?版本:NuGet 包:Microsoft.Web.WebView2:1.0.1083-prerelease Microsoft.Windows.ImplementationLibrary:1.0.210803.1 Win10 SDK:10.0.22000.194 WebView2 运行时:96.0.1054.62 框架:Win32 C++ 操作系统:Win10 发现我的问题 - 需要包含 WebView2EnvironmentOptions.h @user2995035 很高兴你知道了。

以上是关于如何使用 WebView2 控件对本地文件执行 XML/XSL 转换?的主要内容,如果未能解决你的问题,请参考以下文章

WebView2如何加载本地文件?

如何在Visual Studio工具栏中添加WebView2控件?

如何覆盖右键单击 WebView2 控件时出现的 ContextMenu?

可以让 Chrome 对本地文件执行 XSL 转换吗?

是否有对 Webview2 控件的 ActiveX 支持

WebView2 控件不在工具箱中