repl([],Acc) -> lists:reverse(Acc);
repl([$&,$a,$m,$p,$;|T],Acc) -> repl(T,[$&|Acc]);
repl([H|T],Acc) -> repl(T,[H|Acc]).
あなたは、CDATA文字列からすべてのエンティティを交換する必要がある場合、あなたはこの文字列の周りに偽の開始タグを追加して、XMLとしてそれを解析でき(更新)
repl("this is & ampersand",[]).
"this is & ampersand"
をチェックします。
種類:
{{_,_,_,_,_,_,_,_,Lst,_,_,_},_} =
xmerl_scan:string("<root>"++YourStingHere++"</root>"),
lists:foldl(fun ({_,_,_,_,X,text},Acc) -> AcC++ X end, [],Lst).
チェック:
{{_,_,_,_,_,_,_,_,Lst,_,_,_},_} =
xmerl_scan:string("<root>"++"aaa V&H <- "++"</root>").
lists:foldl(fun ({_,_,_,_,X,text},Acc) -> AcC++ X end, [],Lst).
"aaa V&H <- "
これは単一のケースには最適ですが、他のHTMLエンティティはどうですか? http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references既にライブラリに隠された関数があることを期待していました。 – PnzrDrgoon
このアップデートは完全に動作します。ご助力ありがとうございます。 – PnzrDrgoon
'include_lib(" xmerl/include/xmerl.hrl ")。を使用して組み込みのxmerlヘッダーファイルをインクルードすると、より読みやすく、将来証明されたコードになります。たとえば、 '{_、_、_、_、X、text}'は 'Foo#xmlText.value'になり、' {_、_、_、_、_、Lst、 、_、_} 'は' Foo#xmlElement.content'に置き換えることができます。 – dnet