5

假设我疯了,我想用 c# 实现一个基本的 HTML 渲染引擎。我想使用 WPF 控件来显示 HTML 布局。

虽然这样的想法没有任何好处,但我仍然想尝试一下!那么哪些库、项目和文档可以帮助我完成这项工作?

4

4 回答 4

3

由于 WPF XAML 的功能是 HTML 功能的超集,因此您几乎需要做的就是将一个映射到另一个。

如果您的输入是 XHTML,您可以简单地使用 XSLT 或 LINQ-to-XML 来获取数据。

如果您使用 XSLT,您最终会得到一个 XAML,您使用 XamlReader.Parse() 解析该 XAML 以获得一个 UIElement,您可以将其添加到您的 Window 或其他 WPF 容器中。这可能比使用 LINQ-to-XML 需要更多的工作,因为 XSLT 相对有限。

如果您使用 LINQ-to-XML,您可以选择生成 XAML,然后像在 XSLT 案例中一样对其进行解析,或者您可以直接创建对象树。如果您使用 LINQ-to-XML 创建 XAML,我会在 VB.NET 中编写实际的翻译代码,而不是我通常首选的语言 C#。VB.NET 的“XML Literal”语法使这部分工作更容易。

如果您的输入是任意 HTML 而不是 XHTML,我会使用第三方库将其转换为 XHTML 并从那里开始工作。处理 HTML 的所有解析异常需要大量工作,并且可能与您的实际目标几乎无关。

如果您只想显示 HTML 而不将其转换为 WPF 对象,则可以使用 Frame 控件。

于 2010-02-12T18:03:37.373 回答
1

渲染 html 将很容易,只需将其转换为 xaml 文件,并且渲染应该非常快。您将获得一个具有漂亮缩放和字体的硬件加速浏览器。

但是你如何处理 css - 你需要创建样式(Yuck)?DHTML 、 HTML5 和 Java 脚本 .. 现在有很多页面需要这些东西,您甚至无法查看。

Java脚本的简单方法是使用每个人都使用的解析器,可能有更好的方法(以及Java脚本到CIL编译器?)

于 2010-07-14T03:48:49.710 回答
0

我认为这个项目正是你想要实现的目标:
https
://htmlrenderer.codeplex.com/ 也许你可以在它上面工作并添加 HTML 5 和 CSS 3 支持!

于 2014-11-07T12:13:04.787 回答
0

html 解析器,具有到 xaml 替代品的类型映射,有趣...也许您可以将 antlr 用于解析器词法分析器http://www.antlr.org/,更具体地说,这是一个有趣的代码项目,项目http://www.codeproject .com/KB/cs/TagBasedHtmlParser.aspx,您也许可以尝试将您的 html 转换为 xaml,这会很有趣:)

于 2010-02-12T18:06:29.690 回答