【问题标题】:Android: Html.fromHtml() handle non-standard html tagsAndroid:Html.fromHtml() 处理非标准的html标签
【发布时间】:2010-12-23 15:27:43
【问题描述】:

我正在解析可能包含用户定义标签的 html 消息,例如<usertag uservalue="value" />.

我正在使用标准 Html.fromHtml() 函数来解析 html 源代码。不幸的是,它只是忽略了非标准标签并将其从输出中删除。我想保留它们。

我尝试将我自己的 TagHandler 提供给 fromHtml() 函数,但我不知道在 handleTag() 函数中做什么。看起来我无法从 TagHandler.handleTag() 函数访问非标准标签属性\内容?如何使用 fromHtml() 内部传递的 xmlReader?

谢谢

【问题讨论】:

    标签: android html-parsing


    【解决方案1】:

    我正在解析可能包含用户定义标签的 html 消息,例如<usertag uservalue="value" />.

    那么你没有 HTML。

    这里有一些选项:

    1. 彻底摆脱“用户定义的标签”
    2. 让您的源标记为有效的 HTML,并将您的“用户定义的标签”转换为有效的 HTML(例如,使用带有 class 属性的 <div><span>,就像人们使用微格式一样)
    3. 在调用 Html.fromHtml() 之前预处理您的标记以处理您的“用户定义的标签”,将它们转换为有效的 HTML

    【讨论】:

    • 好吧,您可以使用annotation 标签来自定义处理标签,正如我在这里展示的那样:stackoverflow.com/a/50267693/878126,但我不知道如何处理自定义和基本@987654328 @ 标签一起工作。有什么想法吗?
    • @androiddeveloper:不知道,对不起。
    • 您知道处理Html.fromHtml 不受支持(即自定义)标签的好方法吗?我发现了一些非常奇怪的解决方法,使用反射,我认为不值得使用。例如,在自定义字体标签的情况下,这会有所帮助。
    • @androiddeveloper:“你知道处理 Html.fromHtml 不受支持(即自定义)标签的好方法吗?”——不,抱歉。
    【解决方案2】:

    从我们在javadoc中可以看到,似乎有4个参数:

    • 打开,指定这是打开还是关闭标签
    • 标签,大概是标签名
    • 输出,即生成的 Editable,您将向其中添加数据
    • xmlReader,当前的 XML 阅读器。

    不过,您似乎无法使用这些属性。

    最后一个解决方案虽然有点复杂,但可以重新实现Html 以满足您的需求。你可以找到它的来源here

    【讨论】:

    • 没错。我只需要按原样获取所有属性的标签文本并将其放入输出中。但是我只能访问标签名称。
    • 最后的解决方案是自己重做 Html。添加了一些相关细节。
    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2015-06-05
    • 2020-03-24
    • 2012-09-27
    相关资源
    最近更新 更多