erlang 如何解码XML实体?

kuhbmx9i  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(167)

要将字符串编码为XML,xmerl_lib:export_text函数可以完成这项工作,但哪个函数可以完成相反的工作,即将<转换为>
我想转换一个完整的字符串,如:

<foo="bar">

收件人:

<foo="bar">
irtuqstp

irtuqstp1#

我从来没有能够找到一个很好的库,所以我创建了自己的解码函数。

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)
9rnv2umw

9rnv2umw2#

exml软件包支持以下功能:
https://github.com/paulgray/exml/blob/master/src/exml.erl#L54
一般来说,考虑使用exml而不是xmerl,但要知道它是一个基于NIF的解析器。

相关问题