Pergunta

Digamos que estou louco e quero implementar um mecanismo básico de renderização HTML com C#. Eu gostaria de usar controles WPF para exibir o layout HTML.

Embora não haja nada a ganhar com essa ideia, ainda quero experimentar! Então, quais bibliotecas, projetos e documentação me ajudariam a fazer isso?

Foi útil?

Solução

Como os recursos do WPF XAML são um superconjunto dos recursos do HTML, praticamente tudo o que você precisa fazer é mapear um para o outro.

Se a sua entrada for xhtml, você poderá simplesmente usar o XSLT ou LINQ-para-XML para obter os dados.

Se você usar o XSLT, acabará com um XAML que analisará com xamlreader.parse () para obter um UIELEMENT que você pode adicionar à sua janela ou outro contêiner WPF. Provavelmente, isso é mais trabalho do que usar o LINQ para XML porque o XSLT é relativamente limitado.

Se você usar o LINQ-para-XML, poderá optar por produzir XAML e analisá-lo como no caso XSLT, ou apenas criar a árvore de objetos diretamente. Se você criar XAML usando o LINQ-para-XML, eu escrevia o código de tradução real no vb.net em vez de C#, que é o meu idioma preferido normal. A sintaxe "xml literal" do VB.NET facilita a parte do trabalho.

Se sua entrada for HTML arbitrária e não XHTML, eu usaria uma biblioteca de terceiros para convertê -la em XHTML e trabalhar a partir daí. Lidar com toda a estranheza da análise do HTML é muito trabalho e provavelmente não relacionada ao seu objetivo real.

Se você deseja apenas exibir HTML sem transformá -lo em objetos WPF, poderá usar o controle do quadro.

Outras dicas

A renderização do HTML será fácil, apenas converter para o arquivo XAML e a renderização deve ser bastante rápida. Você receberá um navegador acelerado HW com belos zoom e fontes.

Mas como você lida com o CSS - você precisará criar estilos (eco)? DHTML, HTML5 e Java Script .. tantas páginas agora exigem que esses Thinsg você não possa nem vê -lo.

A maneira mais fácil de Java Script é usar o analisador que todos usam, pode haver uma maneira melhor (e o script Java para os compiladores de CIL?)

Parsers HTML, com um mapeamento digitado para alternativas XAML, interessante ... talvez você possa usar o ANTLR para o analisador Lexer http://www.antlr.org/, mais especificamente, aqui está um projeto de código interessante, projeto http://www.codeproject.com/kb/cs/tagbasedhtmlparser.aspx, talvez você possa tentar transformar seu html em xaml, o que seria bastante interessante :)

Eu acho que este projeto é exatamente o que você pretende alcançar:
https://htmlrenderer.codeplex.com/
Talvez você possa trabalhar nisso e adicionar suporte HTML 5 e CSS 3!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top