Я начал изучать erlang, но я борется с преобразованиями типов данных в erlang.Как преобразовать список кортежей в формат XML, используя xmerl (erlang)
У меня есть ответ от MySQL:
[{message,[{id,"500"}],
[{from_user,"[email protected]"}],
[{to_user,"[email protected]"}],
[{txt,"Text message from admin to user"}],
[{created_at,"2015-08-28 17:48:41"}]},
...
{message,[{id,"550"}],
[{from_user,"[email protected]"}],
[{to_user,"[email protected]"}],
[{txt,"message from test to admin"}],
[{created_at,"2015-08-28 17:48:42"}]}]
Но мне нужно возвращать XML (приложение/XML):
<chat>
<message>
<field name="id">500</field>
<field name="from_user">[email protected]</field>
<field name="to_user">[email protected]</field>
<field name="txt">Text message from admin to user</field>
<field name="created_at">2015-08-28 17:48:41</field>
</message>
...
<message>
<field name="id">550</field>
<field name="from_user">[email protected]</field>
<field name="to_user">[email protected]</field>
<field name="txt">message from test to admin</field>
<field name="created_at">2015-08-28 17:48:42</field>
</message>
</chat>
Я следовал ответ на этот вопрос, но не работает: erlang mysql result to xml . Я не получил часть: Io: формат ("~ S", [v (-1)])
, и я попытался код следуя этому примеру: Generating XML in Erlang using xmerl
Если предположить, что ответ был:
Fields = [[<<"44">>,<<"[email protected]">>, <<"[email protected]">>,<<"message here">>, <<"2015-09-08 10:49:26">>],
[<<"47">>,<<"[email protected]">>, <<"[email protected]">>,<<"response to message">>, <<"2015-09-08 10:49:36">>]].
то, что я пытался в моем модуле:
-define(xml_prolog, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>").
...
make_xml(Fields) ->
Xml = xmerl:export_simple([xml_simple(Fields)],
xmerl_xml,
[{prolog, ?xml_prolog}]),
unicode:characters_to_binary(Xml).
xml_simple(Fields) ->
{chat, [{message, lists:map(
fun(Entry) ->
conversion(Entry)
end, Fields)}]}.
conversion(List_of_lists) ->
Tmp = lists:map(
fun(E) ->
entries_to_tuple_of_lists(E)
end, List_of_lists),
[ {field, [{id, Id}],
[{from_user, From}],
[{to_user, To}],
[{txt, Body}],
[{created_at, Date}]} || {Id,From,To,Body,Date} <- Tmp].
entries_to_tuple_of_lists(Entries) ->
list_to_tuple(
lists:map(
fun(Elem) ->
bitstring_to_list(Elem)
end, Entries)).
«v (-1)» относится к результату предыдущей команды в оболочке Erlang, это помогает? В любом случае, было бы лучше, если бы вы показали, что вы пробовали, и какие ошибки вы получили в результате, иначе любой, кто отвечает, останется в основном повторением совета, уже приведенного в том, с чем вы связались. –