Вопрос

Допустим, я сумасшедший и хочу реализовать базовый механизм рендеринга HTML с помощью C#.Я хотел бы использовать элементы управления WPF для отображения макета HTML.

Хотя от такой идеи нет никакой пользы, я все же хочу ее попробовать!Какие библиотеки, проекты и документация помогут мне в этом?

Это было полезно?

Решение

Поскольку возможности WPF XAML представляют собой расширенный набор возможностей HTML, практически все, что вам нужно сделать, — это сопоставить одно с другим.

Если вы вводите XHTML, вы можете просто использовать XSLT или LINQ-to-XML для получения данных.

Если вы используете XSLT, вы получите XAML, который вы анализируете с помощью XamlReader.Parse(), чтобы получить UIElement, который вы можете добавить в свое окно или другой контейнер WPF.Вероятно, это потребует больше усилий, чем использование LINQ-to-XML, поскольку возможности XSLT относительно ограничены.

Если вы используете LINQ-to-XML, вы можете создать XAML и затем проанализировать его, как в случае с XSLT, или вы можете просто создать дерево объектов напрямую.Если вы создаете XAML с использованием LINQ-to-XML, я бы написал фактический код перевода на VB.NET вместо C#, который является моим любимым языком.Синтаксис «XML Literal» VB.NET упрощает эту часть работы.

Если вы вводите произвольный HTML, а не XHTML, я бы использовал стороннюю библиотеку, чтобы преобразовать его в XHTML и работать оттуда.Обработка всех странностей синтаксического анализа HTML — это большая работа, которая, вероятно, по большей части не связана с вашей реальной целью.

Если вы просто хотите отображать HTML, не превращая его в объекты WPF, вы можете использовать элемент управления Frame.

Другие советы

Рендеринг HTML будет простым: просто конвертируйте его в файл xaml, и рендеринг должен быть довольно быстрым.Вы получите аппаратно-ускоренный браузер с красивым масштабированием и шрифтами.

Но как обращаться с CSS — вам нужно будет создавать стили (фу)?DHTML, HTML5 и Java-скрипт..Сейчас так много страниц требуют этих вещей, что вы даже не можете их просмотреть.

Самый простой способ для Java-скрипта — использовать синтаксический анализатор, который используют все, может быть, есть лучший способ (а Java-скрипт для компиляторов CIL?)

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 с атрибуция
Не связан с StackOverflow
scroll top