有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    XML以普通字符串的形式发送。因此,第一步是创建可以相互发送和接收字符串的客户端,例如“Hello,world”。接下来需要创建一个对象,并使用JAXB转换为字符串并发送。然后在其他客户机上接收并再次使用JAXB。通过这种方式,您可以轻松调试发送和接收的内容。完成后,可以尝试避免转换为临时xml字符串,并在编组和解编组时直接使用套接字流
    我认为不应该使用ObjectOutputStream,因为它将对象到字节数组序列化。但您需要将对象“序列化”为XML(字符串)并发送它
    在这里,您可以看到如何将对象封送到java String:I want to convert an output stream into String object