erlang的mysql结果为xml [英] erlang mysql result to xml

查看:137
本文介绍了erlang的mysql结果为xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个输出:

MysqlResult = {selected,["id","first_name","last_name"],
         [{1,"Matt","Williamson"},
         {2,"Matt","Williamson2"}]}

如何使它看起来像:

XML = "
 <result id='1'>
 <first_name>Matt</first_name>
 <last_name>Williamson</last_name>
 </result>
 <result id='2'>
 <first_name>Matt</first_name>
 <last_name>Williamson2</last_name>
 </result>"

我正在寻找一种智能的方式将其置于IQ(ejabberd)

I am looking for a smart way for placing it into IQ ( ejabberd )

IQ#iq{type = result, sub_el =
                   [{xmlelement, "result",
                   [{"xmlns", ?NS_NAMES}],
                   [{xmlelement, "userinfo", [],
                   [{xmlcdata,"???"??  }]}]}]}


推荐答案

使用 xmerl 来创建XML Erlang:

Use xmerl to create XML in Erlang:

1> MysqlResult = {selected,["id","first_name","last_name"],
1>          [{1,"Matt","Williamson"},
1>          {2,"Matt","Williamson2"}]}.
{selected,["id","first_name","last_name"],
          [{1,"Matt","Williamson"},{2,"Matt","Williamson2"}]}

2> {selected, _Columns, Results} = MysqlResult.
{selected,["id","first_name","last_name"],
          [{1,"Matt","Williamson"},{2,"Matt","Williamson2"}]}

3> Content = [{result, [{id, Id}], [{first_name, [First]}, {last_name, [Last]}]} || {Id, First, Last} <- Results].
[{result,[{id,1}],
         [{first_name,["Matt"]},{last_name,["Williamson"]}]},
 {result,[{id,2}],
         [{first_name,["Matt"]},{last_name,["Williamson2"]}]}]

4> xmerl:export_simple(, xmerl_xml).
["<?xml version=\"1.0\"?>",
 [[["<","result",[[" ","id","=\"","1","\""]],">"],
   [[["<","first_name",">"],["Matt"],["</","first_name",">"]],
    [["<","last_name",">"],
     ["Williamson"],
     ["</","last_name",">"]]],
   ["</","result",">"]],
  [["<","result",[[" ","id","=\"","2","\""]],">"],
  [[["<","first_name",">"],["Matt"],["</","first_name",">"]],
    [["<","last_name",">"],
     ["Williamson2"],
     ["</","last_name",">"]]],
   ["</","result",">"]]]]

5> io:format("~s", [v(-1)]).
<?xml version="1.0"?><result id="1"><first_name>Matt</first_name><last_name>Williamson</last_name></result><result id="2"><first_name>Matt</first_name><last_name>Williamson2</last_name></result>ok

这篇关于erlang的mysql结果为xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆