Лучший способ отобразить Html - использовать WebView
, но если вы хотите преобразовать его в текст, который может отображать RichTextBlock
, это может быть более сложным.
Позвольте мне кратко объяснить идею:
1. Загрузите Html и превратите его в анализируемый объект.
В диспетчере пакетов nuget вы можете найти несколько связанных Html пакетов для синтаксического анализа, выполнить поиск Html
, чтобы загрузить самый популярный пакет.
2. Разобрать документ Html и сгенерировать соответствующий Block
или Inline
на основе типа тега по рекурсии
Рекурсивный метод - проверить, есть ли у анализируемого в данный момент Tag
дочерние элементы, и если это так, повторите метод разбора.
3. Методы преобразования для различных тегов
RichTextBlock
не могут быть преобразованы в соответствующий стилизованный текст в соответствии с тегами Html, поэтому их необходимо написать самим.
Take <b> ... </b>
в качестве примера, это жирный встроенный текст. Этот метод можно использовать при преобразовании:
private static Inline GenerateBold(HtmlNode node)
{
if (string.IsNullOrEmpty(node.InnerText.Trim()))
return null;
Span s = new Span();
s.Inlines.Add(new Run() { Text = node.InnerText.Trim(), FontWeight = FontWeights.Bold });
return s;
}
Текстовые типы, поддерживаемые RichTextBlock
, находятся в пространстве имен Windows.UI.Xaml.Documents
, которое в основном разделено на Inline
и Block
. Если вы хотите увидеть все типы текста в этом пространстве имен, вы можете просмотреть этот документ
Преобразование тегов Html в типы текста, поддерживаемые RichTextBlock
, требует однозначного одно обращение. Кроме того, вы не сможете полностью воспроизвести эффект CSS на стилях в RichTextBlock
(это означает, что вам также необходимо создать CSS синтаксический анализатор).
Если вы собираетесь сделайте эту большую работу, я надеюсь, что мои предложения могут помочь вам.
С уважением.