我正在进行REST调用并收回此XML:
<replacement><![CDATA[this is & ampersand]]></replacement>
我已经把我真正关心的那一点包括在内:
this is & ampersand
我现在如何将此片段解码为(我不使用偏航):
this is & ampersand
答案 0 :(得分:0)
例如
repl([],Acc) -> lists:reverse(Acc);
repl([$&,$a,$m,$p,$;|T],Acc) -> repl(T,[$&|Acc]);
repl([H|T],Acc) -> repl(T,[H|Acc]).
检查
repl("this is & ampersand",[]).
"this is & ampersand"
(更新)如果需要从cdata字符串替换所有实体,可以在此字符串周围添加伪开始标记并将其解析为xml。
种类:
{{_,_,_,_,_,_,_,_,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 <- "
答案 1 :(得分:0)
这取决于您拥有的数据类型。如果这是ascii文本,您可以将其替换为“&amp;”像@Odobenus Rosmarus这样的标志说,如果这是一个unicode,那么你会做一些额外的工作。查看this项目或使用标准unicode
模块。