【问题标题】:How to parse HTML to Text with styles如何将 HTML 解析为带有样式的文本
【发布时间】:2019-06-04 16:59:30
【问题描述】:

我正在使用 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 内容转换为带格式的文本。

【问题讨论】:

  • 定义普通文本,你的普通文本示例没有任何正常
  • 好的,感谢我编辑的帮助。
  • 尝试将html转换为rtf。见此链接:stackoverflow.com/questions/5922626/…
  • @JuarezJúnior 这很有帮助。

标签: c# html xamarin.android


【解决方案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#。

【讨论】:

  • 我很感激,这可能会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 2018-12-30
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多