簡體   English   中英

使用C#進行HTML渲染

[英]HTML Rendering with C#

假設我瘋了,我想用c#實現一個基本的HTML渲染引擎。 我想使用WPF控件來顯示HTML布局。

雖然這樣的想法沒有任何好處,但我還是想嘗試一下! 那么什么庫,項目和文檔可以幫助我完成這項工作?

由於WPF XAML的功能是HTML功能的超集,因此您需要做的就是將這些功能映射到另一個。

如果您的輸入是XHTML,您只需使用XSLT或LINQ-to-XML來獲取數據。

如果您使用XSLT,您最終會得到一個XAML,您可以使用XamlReader.Parse()解析該XAML以獲取可以添加到Window或其他WPF容器的UIElement。 這可能比使用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控件。

渲染html將很容易轉換為xaml文件,渲染應該非常快。 您將獲得具有漂亮縮放和字體的硬件加速瀏覽器。

但是你如何處理CSS - 你需要創建樣式(Yuck)? DHTML,HTML5和Java腳本..這么多頁面現在需要這些thinsg你甚至無法查看它。

Java腳本的簡單方法是使用每個人使用的解析器,可能有更好的方法(和CIL編譯器的Java腳本?)

html解析器,帶有xaml替代的類型映射,有趣......也許你可以使用antlr作為解析器詞法分析器http://www.antlr.org/ ,更具體地來說是一個有趣的代碼項目,項目http://www.codeproject .com / KB / cs / TagBasedHtmlParser.aspx ,您也許可以嘗試將您的html轉換為xaml,這將非常有趣:)

我認為這個項目正是您的目標:
https://htmlrenderer.codeplex.com/
也許你可以使用它並添加HTML 5和CSS 3支持!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM