Java:XML对象
我正在做一个简单的点对点游戏,我决定使用XML通过socket发送信息(下面的例子)。但我不知道怎么寄?我应该简单地使用ObjectOutputStream.writeObject(obj)
,并使用我的示例中的object
作为参数?
我主要是问,通过socket发送XML对象看起来怎么样
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
public class SendIPObject {
public static void main(String[] args) throws Exception {
JAXBContext context = JAXBContext.newInstance(IPSender.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
Player object = new Player();
object.setID(0);
object.setIP("192.167.211.167");
m.marshal(object, System.out);
}
}
import java.io.Serializable;
abstract public class Player implements Serializable{
private String ip;
private int id;
public String getIP() {
return ip;
}
public int getID() {
return id;
}
public void setIP(String ip) {
this.ip = ip;
}
public void setID(int id) {
this.id = id;
}
}
# 1 楼答案
XML以普通字符串的形式发送。因此,第一步是创建可以相互发送和接收字符串的客户端,例如“Hello,world”。接下来需要创建一个对象,并使用JAXB转换为字符串并发送。然后在其他客户机上接收并再次使用JAXB。通过这种方式,您可以轻松调试发送和接收的内容。完成后,可以尝试避免转换为临时xml字符串,并在编组和解编组时直接使用套接字流
我认为不应该使用
ObjectOutputStream
,因为它将对象到字节数组序列化。但您需要将对象“序列化”为XML(字符串)并发送它在这里,您可以看到如何将对象封送到java
String
:I want to convert an output stream into String object