【erlang】erlsom的简单的使用

2019-05-29  本文已影响0人  夏澪

前言

和银行打交道,还是不可避免会用到 xml。erlang 有一个 xml 解析工具名为 erlsom,可以做一些简单的解析。

代码

xml_to_map(Xml) ->
  {ok, KVList, _LeftData} = erlsom:simple_form(Xml),
  analyze([KVList], #{}).

analyze([], Map) ->
  Map;
analyze([{Key, [], ValueList} | Tail], Map) ->
  NewMap = maps:put(binary:list_to_bin(Key), analyze(ValueList, #{}), Map),
  analyze(Tail, NewMap);
analyze([{_, [{_, Key}], ValueList} | Tail], Map) ->
  NewMap = maps:put(binary:list_to_bin(Key), analyze(ValueList, #{}), Map),
  analyze(Tail, NewMap);
analyze([Val], _Map) ->   %%循环, 找到底层数据
  unicode:characters_to_binary(Val).

这个解析方法会保持内部的数据结构,对于简单的 xml 可以做到正确的解析,并保持层次结构

 <xml>val</xml>   --->     #{<<"xml">> => val}
上一篇下一篇

猜你喜欢

热点阅读