Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在服务器和客户端套接字之间传输XML数据的最佳方法_Java_Xml_Sockets - Fatal编程技术网

Java 在服务器和客户端套接字之间传输XML数据的最佳方法

Java 在服务器和客户端套接字之间传输XML数据的最佳方法,java,xml,sockets,Java,Xml,Sockets,服务器端: PrintWriter outputStream = new PrintWriter(client.getOutputStream(),true); BufferedReader inputStream = new BufferedReader(newInputStreamReader(client.getInputStream())); outputStream.println("hello client"); System.out.println("server got: " +

服务器端:

PrintWriter outputStream = new PrintWriter(client.getOutputStream(),true);
BufferedReader inputStream = new BufferedReader(newInputStreamReader(client.getInputStream()));
outputStream.println("hello client");
System.out.println("server got: " + inputStream.readLine());
outputStream.println("to the client");
客户端:

try{
    serverSocket = new Socket("machineName", 4444);
    out = new PrintWriter(serverSocket.getOutputStream(), true);
    in = new BufferedReader(new InputStreamReader(serverSocket.getInputStream()));
}
catch(Exception e){
    e.printStackTrace();
}

if ((fromServer = in.readLine()) != null) {
    System.out.println("Server: " + fromServer);
    fromUser = "I am the user";
    out.println(fromUser);
    System.out.println("Server: " + in.readLine());
}
我使用这种格式在服务器和客户端套接字之间进行通信。现在我想在客户端和服务器之间发送XML,而不是字符串。我使用DOM在服务器端和客户端解析XML数据

有没有一种有效的方法可以在客户端和服务器之间传输XML,而不是将XML转换为字符串并从XML数据中删除换行符(因为readLine一次读取一行,XML开始标记和结束标记不会以XML格式出现在一行中),然后通过Printwriter将其发送给客户端

谢谢


这不是一个家庭作业问题。我正在为面试学习java套接字

查看staxapi。它是为在internet上传输XML数据而设计的

流是指一种编程模型,其中XML信息集是 在应用程序运行时串行传输和解析,通常是实时传输 时间,而且往往来自内容不精确的动态来源 事先知道。
[…]
用于XML处理的流模型在以下情况下特别有用: 应用程序有严格的内存限制,就像手机运行时一样 Java平台、Micro Edition(Java ME平台)或 应用程序需要同时处理多个请求,如 应用服务器


文档中的更多信息:

您可以使用

EXI格式是可扩展标记语言(XML)信息集的一种非常紧凑的表示形式,旨在同时优化性能和计算资源的利用率


实际上,XML数据只不过是字符串(但也可以将其视为二进制数据)。您的问题是发送多行xml字符串。如果您不想使用第三方库,只需手动操作即可,这里是一个很好的起点:
本例使用
字节流
发送和接收解析xml的xml数据