如何通过套接字生成和发送XML
我试图从erlang值生成XML,并通过套接字返回该XML 既然如此如何通过套接字生成和发送XML,xml,sockets,erlang,Xml,Sockets,Erlang,我试图从erlang值生成XML,并通过套接字返回该XML 既然如此 Value = 2, Type = "3", Scope = anatom 我想要 <?xml version="1.0"?> <result value=2 type="3" scope="anatom" /> <?xml version="1.0\"?> <result value=2 type="3" scope=[1,2]/>" 如果我愿意,我会得到类似于[
Value = 2, Type = "3", Scope = anatom
我想要
<?xml version="1.0"?>
<result value=2 type="3" scope="anatom" />
<?xml version="1.0\"?> <result value=2 type="3" scope=[1,2]/>"
如果我愿意,我会得到类似于[60,63120109,…]的东西
<?xml version="1.0"?>
<result value=2 type="3" scope="anatom" />
<?xml version="1.0\"?> <result value=2 type="3" scope=[1,2]/>"
它的名字叫
...
Reply = xml_formater:format_return(Reply),
{ok, Reply, State}
上面的回复被传递回我的套接字泛型行为,这反过来会导致
gen_tcp:send(Socket, io_lib:fwrite("~p~n",[Reply])),
能找个好心人帮我摆脱痛苦吗 似乎有两个问题: A) 这不是格式良好的XML--
所以你将无法生成它
B) 之所以将输出视为整数列表,是因为Erlang中列表和字符串的关系——基本上“abc”相当于[$a、$B、$c](或[97,98,99])。erlang pretty打印机将显示一个包含所有可打印字符的列表,作为等效字符串。[1]
范围变量[1,2]相当于由两个不可打印字符(ascii 1,ascii 2)组成的字符串。xml例程并不关心它是否不可打印。输出显示为整数列表,因为它包含不可打印的字符
如果将Scope变量更改为[97,98],您将看到它在生成的xml中显示为“ab”
所以。。如果您对格式良好的结果满意--
范围变量必须是字符串“[1,2]”(或[$[,$1,$,$2,$]]或[91,49,44,50,93])
[1] 这是一种简化——还有几十篇文章对此进行了更详细的解释
gen_tcp:send(Socket, io_lib:fwrite("~p~n",[Reply])),
<?xml version="1.0"?> <result value=2 type="3" scope=[1,2]/>
<?xml version="1.0"?> <result value="2" type="3" scope="[1,2]"/>