2011年10月20日 星期四

[Erlang] Simple sample to parse XML by xmerl

XML:
<Bookstore>
  <Book>
    <ISBN>9781401309657</ISBN>
    <Name>The Last Letcture</Name>
    <Author>Randy Pausch</Author>
  </Book>
</Bookstore>
Code:
%%% xmltest.erl
%%%
%%% @author Hank Wang <drapho@gmail.com>
%%%
%%% @doc simple sample to parse XML by xmerl
%%%
-module(xmltest).
-include_lib("xmerl/include/xmerl.hrl").
-export([main/0]).
main() ->
Body = "
<Bookstore>
<Book>
<ISBN>9781401309657</ISBN>
<Name>The Last Letcture</Name>
<Author>Randy Pausch</Author>
</Book>
</Bookstore>",
{Xml, _} = xmerl_scan:string(Body),
[val(xmerl_xpath:string("//ISBN", Xml)),
val(xmerl_xpath:string("//Name", Xml)),
val(xmerl_xpath:string("//Author", Xml))
].
val(X) ->
[#xmlElement{name = N, content = [#xmlText{value = V}|_]}] = X,
{N, V}.
view raw xmltest.erl hosted with ❤ by GitHub
Result:
[{'ISBN',"9781401309657"},
 {'Name',"The Last Letcture"},
 {'Author',"Randy Pausch"}]
Related Posts Plugin for WordPress, Blogger...