0

アーランコード:

-module(index).
-compile(export_all).

-include_lib("erlsom/include/erlsom.hrl").

start(Port) ->
    misultin:start_link([{port, Port}, {loop, fun(Req) -> handle_http(Req) end}]).

stop() ->
    misultin:stop().

handle_http(Req) ->
    Var = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><code>1</code><var1>123456</var1><var2>qwerty</var2></request>",
    XmlErlsom = erlsom:simple_form(Var),
    Req:ok("~s", [Var]).

コードをコンパイルしてサーバーを起動した後、localhost:8080/ を開くと、シェルから次のエラーが表示されました。

http process <0.196.0> has died with reason: {badarg,
                                          [{erlang,list_to_binary,
                                            [[{ok,
                                               {"request",[],
                                                [{"code",[],["1"]},
                                                 {"var1",[],["123456"]},
                                                 {"var2",[],["qwerty"]}]},
                                               []}]]},

ChicagoBoss 用の同じ lib 'erlsom' が正常に機能しました...

その後、xmerlで試してみましたが、結果は似ています。

4

1 に答える 1

1

erlsom:simple_form は、{ok, ParsedData} の形式のタプルを返します。

A = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><code>1</code><var1>123456</var1>`<var2>qwerty</var2></request>".

> erlsom:simple_form(A).
{ok,{"request",[],
     [{"code",[],["1"]},
      {"var1",[],["123456"]},
      {"var2",[],["qwerty"]}]},
    []}

この返されたタプルを Req:ok() に渡そうとしていると思いますが、これはリスト、バイナリ、iodata、またはタプル以外のものを想定しています。

于 2012-12-18T02:14:39.013 に答える