文字列を XML にエンコードするには、xmerl_lib:export_text
関数がその仕事をしますが、反対の仕事をする関数、つまり ? に変換<
する関数は>
どれですか?
次のような完全な文字列を変換したい:
<foo="bar">
に:
<foo="bar">
これに適したライブラリを見つけることができなかったので、独自のデコード関数を作成しました。
decode(">" ++ Rest) ->
">" ++ decode(Rest);
decode("<" ++ Rest) ->
"<" ++ decode(Rest);
decode(""" ++ Rest) ->
"\"" ++ decode(Rest);
decode([]) ->
[].
wikipediaによると、XML の文字参照は 5 つしかないため、これら 5 つをサポートしても問題ありません。
& → & (ampersand, U+0026)
< → < (less-than sign, U+003C)
> → > (greater-than sign, U+003E)
" → " (quotation mark, U+0022)
' → ' (apostrophe, U+0027)
exml
パッケージはこれをサポートしています:
https://github.com/paulgray/exml/blob/master/src/exml.erl#L54
一般に、xmerl よりも exml を検討しますが、これは NIF ベースのパーサーであることに注意してください。