2

因此,我试图通过套接字从使用 XML 进行通信的旧游戏中检索一些数据。当来自游戏的消息下线时,它会显示如下内容:

<?xml version=\"1.0\"?><message><type>SERVER</type><user>TestDeleteOrKillMe</user><cmd>PRIVATE_MSG</cmd><host>65.255.81.81</host><msg>57</msg></message>

但是,由于这篇文章不会显示字符,您在这里看不到的是,在 msg 标签中的数字 57 之后有两个 0x10 字符,显示为空框。这些框的目的是描述发送到服务器和从服务器发送的参数。例如,数字 57 对应一个包含变量的消息代码,然后在 0x10 之后发送变量的内容。

我的问题是使用 XmlSerialize 序列化从缓冲区中提取的字节会产生一个与字符相关的无效错误,即:

 {"'', hexadecimal value 0x10, is an invalid character. Line 1, position 135."}

问题是我该如何解决这个问题?有没有办法配置序列化器来接受这个字符或一些黑客来使它工作?

4

1 回答 1

0

一个可能的问题是 0x10 被 XML 1.0 标准明确排除。见这篇文章。您可以尝试更改为 XML 1.1;否则您可能必须自己“手动”解析 XML,或者至少在反序列化之前进行替换(例如用垂直管道替换 0x10)。

于 2013-11-02T05:28:54.470 回答