0

パケットタイプを生の XML 文字列に出力する方法は? 例https://github.com/processone/exmpp/blob/master/examples/echo_client.erlでは、echo_packet(MySession, Packet) ->関数は xmlel レコード タイプのパラメータ Packet を取ります。投稿https://stackoverflow.com/a/31020654/579689で述べたように、関数xml:element_to_binary/1を試しましたが、機能しませんでした。

次の式を使用して印刷しようとしたとき

io:format("Received Presence stanza:~n~p~n~n", [xml:element_to_binary({xmlel,<<"message">>,[{<<"xml:lang">>,<<"en">>},{<<"type">>,<<"chat">>},{<<"to">>,<<"x">>},{<<"id">>,<<"aaf6a">>}],[{xmlcdata,<<"\n">>},{xmlel,<<"body">>,[],[{xmlcdata,<<"wewe">>}]},{xmlcdata,<<"\n">>},{xmlel,<<"active">>,[{<<"xmlns">>,<<"http://jabber.org/protocol/chatstates">>}],[]},{xmlcdata,<<"\n">>},{xmlel,<<"time">>,[{<<"xmlns">>,<<"urn:server-time">>},{<<"stamp">>,"2015-06-23T22:48:24Z"}],[]}]})]). 

次のエラーを受け取りました

=ERROR REPORT==== 12-Oct-2015::09:06:01 ===
Error in process <0.30.0> with exit value: {undef,[{xml,element_to_binary,[{xmlel,<<7 bytes>>,[{<<8 bytes>>,<<2 bytes>>},{<<4 bytes>>,<<4 bytes>>},{<<2 bytes>>,<<1 byte>>},{<<2 bytes>>,<<5 bytes>>}],[{xmlcdata,<<1 byte>>},{xmlel,<<4 bytes>>,[],[{xmlcdata,<<4 bytes>>}]},{xmlcdata,<<1 byte>>},{xmlel,<<6 bytes>>,[{<<5 bytes>>,<<37 bytes>>}],[]},{xmlcdata,<<1 byte>>},{xmlel,<<4 bytes>>,[{<<5 bytes>>,<<15 bytes>>},{<<5 bytes>>,"2015-06-23T22:48:24Z"}],[]}]}],[]},{echo_client,loop,1,[{file,"../examples/ech... 
4

1 に答える 1

1

エラー{undef,[{xml,element_to_binary,[list of N args]}]}は、関数xml:element_to_binary/Nが未定義であることを示しています。

element_to_stringの代わりに試すことができるプロジェクトの xml モジュールを調べますelement_to_binary

ただし、効率の観点からは、exmpp_xml:document_to_iolist/1あなたの方が適しています

于 2015-10-12T16:43:58.283 に答える