如何解码HTML实体?

时间:2013-05-31 11:07:13

标签: xml encoding erlang

要将字符串编码为XML,xmerl_lib:export_text函数可以完成工作,但是哪个函数执行相反的工作,即将<转换为>

我想转换一个完整的字符串,如:

<foo="bar">

要:

<foo="bar">

2 个答案:

答案 0 :(得分:1)

我从来没能找到一个好的库,所以我创建了自己的解码功能。

decode("&gt;" ++ Rest) ->
 ">" ++ decode(Rest);
decode("&lt;" ++ Rest) ->
 "<" ++ decode(Rest);
decode("&quot;" ++ Rest) ->
 "\"" ++ decode(Rest);
decode([]) ->
 [].

根据wikipedia,XML只有五个字符引用,所以你应该可以支持这五个:

&amp; → & (ampersand, U+0026)
&lt; → < (less-than sign, U+003C)
&gt; → > (greater-than sign, U+003E)
&quot; → " (quotation mark, U+0022)
&apos; → ' (apostrophe, U+0027)

答案 1 :(得分:1)

exml包支持此功能:

https://github.com/paulgray/exml/blob/master/src/exml.erl#L54

一般来说,考虑exml over xmerl,但要注意它是一个基于NIF的解析器。