Показать строку в формате HTML - PullRequest
1 голос
/ 16 января 2010

Я хотел бы отобразить строку, содержащую HTML-код (в основном для форматирования, например курсив, полужирный шрифт, отступ, цвета и т. Д.) Из консольного приложения C #.

Не думаю, что для этого мне понадобится класс WebBrowser, поскольку навигация невозможна.

1) Какой самый простой способ сделать это?

2) Можно ли отобразить его в консоли, используя форматирование hmtl?

спасибо

Ответы [ 3 ]

2 голосов
/ 16 января 2010

В консоли нет поддержки html. Вы можете установить основной цвет и цвет фона консоли, но вы не можете использовать курсив или жирный шрифт. В лучшем случае вы могли бы написать интерпретатор html (или взломать что-нибудь с помощью классов в пространстве имен System.Xml), чтобы позволить вам использовать цвета в консоли.

Похоже, вы действительно используете Winforms, поскольку вы ссылаетесь на элемент управления WebBrowser. Если это так, вы можете попробовать использовать только для чтения RichTextBox или WebBrowser элемент управления, или, если вам нужно абсолютно легкое решение, вы можете реализовать свой собственный элемент управления, который обрабатывает части HTML, которые вам нужны.

1 голос
/ 16 января 2010

Использование существующего механизма рендеринга HTML было бы очень дорого с точки зрения производительности, особенно памяти.

Другая проблема, с которой вы сталкиваетесь, заключается в том, что большая часть форматирования HTML не будет транслироваться на консоль - единственные эффекты, которые вы действительно имеете в наличии, - это цвет переднего плана и фона.

Лучше всего написать собственный синтаксический анализатор. Вам нужно будет решить, как интерпретировать такие вещи, как полужирный и курсив, используя цвета консоли.

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

Обратите внимание, что HTML не является обычным языком, поэтому вы не можете эффективно использовать регулярные выражения для разбора. Я бы порекомендовал простой рекурсивный приличный парсер - он прост в реализации. Вы также можете написать конечный автомат, но для его корректной работы потребуется некоторая рекурсивная или стековая семантика.

0 голосов
/ 16 января 2010

Вы можете использовать HTML Control для рендеринга, если хотите.

Вы просто добавляете его в форму Windows, и он оборачивает MSHTML, выполняя визуализацию за вас.

Имейте в виду, что рендеринг в HTML не легкая вещь. Gecko, WebKit и MSHTML - ОГРОМНЫЕ кодовые базы. Вам лучше использовать один из них, чем пытаться свернуть свой собственный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...