如何使用样式将HTML解析为文本

时间:2019-05-31 01:19:52

标签: c# html xamarin.android

我正在使用Xamarin Android构建应用程序,并且想要将HTML转换为具有格式的普通格式,例如:

  

HTML代码

<p><strong>Lorem ipsum</strong> is placeholder text <strong><em><span style="color:#ff0000">commonly</span></em></strong> used in the graphic, print, and publishing industries for previewing layouts and visual mockups.
</p>
<p>&nbsp;</p>
<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>
  

文字

Lorem ipsum 是占位符文本, 通常 ,用于图形,印刷和出版行业,用于预览布局和视觉模型。

  • 项目1
  • 第2项
  • 第3项

我从数据库中获取了此内容,我想将 post 内容转换为具有格式的文本。

1 个答案:

答案 0 :(得分:1)

TextView当前支持in this blog post中列出的以下HTML标签:

<a href="...">
<b>
<big>
<blockquote>
<br>
<cite>
<dfn>
<div align="...">
<em>
<font size="..." color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i>
<img src="...">
<p>
<small>
<strike>
<strong>
<sub>
<sup>
<tt>
<u>

如果只想在TextView中显示它,则只需执行以下操作即可:

TextView txtView;
txtView.TextFormatted = Html.FromHtml(HTMLFromDataSource);

如果您想使用其他控件,则还有其他方法可以实现此目的,但是TextView一定程度上支持HTML,因此,如果可以的话,我会这样做。

但是,值得注意的是,UL和LI似乎目前不受支持。因此,您必须使用类似Html.TagHandler的方法来告诉它要做什么,这是一个Java实现:

public class UlTagHandler implements Html.TagHandler{
    @Override
    public void handleTag(boolean opening, String tag, Editable output,
                          XMLReader xmlReader) {
            if(tag.equals("ul") && !opening) output.append("\n");
            if(tag.equals("li") && opening) output.append("\n\t•");
    }
}

textView.setText(Html.fromHtml(myHtmlText, null, new UlTagHandler()));

您应该能够将其转换为Xamarin的C#。