嘿伙计们,我有一个Cocoa应用程序,通过网络将NSDictionary发送到各种设备。以前,它只发送到其他Mac,所以使用NSKeyedArchiver写入NSData对象工作正常,另一方面我会使用NSKeyedUnarchiver。
我现在正在为Windows支持编写Java实现,我需要转换plist数据,这些数据来自网络,如:
< 3c3f786d 6c207665 7273696f ... >
到一个简单的Java String。 (这样我就可以用XML解析器来阅读它。)相反似乎在这里得到了回答:[https://stackoverflow.com/questions/3774872]但我仍然无法完全理解我应该执行编码/解码的顺序。 1
答案 0 :(得分:2)
您通过网络看到的“字符串”实际上是原始文件中显示的XML文件。
如果您将其视为byte[]
数组对象,则可以将其传递给java.lang.String
构造函数:
byte[] theBytes = ...;
String theString = new String(theBytes, "UTF-8");
从那里到XML解析器。
如果通过网络传输的实际字节数为'<'
,' '
,'3'
,'c'
等,那么在发送数据的那一方面有些不可思议,因为它似乎是在发送之前通过数据的NSString
方法将数据转换为-description
。 NSKeyedUnarchiver
不足以处理这样的字符串,所以我不怀疑是这种情况,但如果是这样的话,将它转换回原始字节流然后使用上面的内容就非常简单了用于获取XML字符串的Java构造函数。