用java实现xml的接收并且转换成List
服务器代码
package com.baosight.mro.common.util;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Client {
private Socket socket;
public Client() throws UnknownHostException, IOException{
socket = new Socket("127.0.0.1",8080);
}
public void start(){
try {
//获取输出流
OutputStream out = socket.getOutputStream();
File file = new File("D:/myemp.xml");
//创建SAXReader,读取指定文件
SAXReader reader = new SAXReader();
Document doc = reader.read(file);
//创建XML输出流
XMLWriter writer = new XMLWriter();
writer.setOutputStream(out);
writer.write(doc);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
try {
Client c = new Client();
c.start();
} catch (Exception e) {
e.printStackTrace();
System.out.println("客户端初始化失败");
}
}
}
客户端代码
package com.baosight.mro.common.util;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import com.baosight.mro.common.util.domain.Emp;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 服务端
*/
public class Server {
private ServerSocket server;
public Server() throws IOException{
server = new ServerSocket(8080);
}
public void start(){
try {
//监听客户端,建立连接
System.out.println("等待连接..........");
Socket socket = server.accept();
System.out.println("服务端连接成功!");
//获取输入流
InputStream in = socket.getInputStream();
//创建SAXReader,读取指定文件
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
//获取根节点
Element root = doc.getRootElement();
//获取根节点(list)下所有子节点emp
List<Element> list = root.elements();
//保存所有员工对象的集合
List<Emp> emplist = new ArrayList<Emp>();
for(Element e : list){
int id = Integer.parseInt(e.attribute("id").getValue());
String name = e.elementText("name");
int age = Integer.parseInt(e.elementText("age"));
String gender = e.elementText("gender");
int salary = Integer.parseInt(e.elementText("salary"));
/* emplist.add(new Emp(id,name,age,gender,salary));*/
}
System.out.println("解析完毕!");
//输出到控制台
for(Emp e : emplist){
System.out.println(e);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(server != null){
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
try {
Server s = new Server();
s.start();
} catch (IOException e) {
e.printStackTrace();
System.out.println("初始化服务端失败!");
}
}
}
XML文件
<?xml version="1.0" encoding="UTF-8"?>
-<LIST>
-<RY>
<RY_RYBM>20290004</RY_RYBM>
<RY_YHZWM>张三</RY_YHZWM>
<RY_MZ>汉族</RY_MZ>
<RY_JG>陕西西安安康</RY_JG>
<ZH_ID>1000375</ZH_ID>
<RY_XZZW>xxx主任</RY_XZZW>
<RY_XB>男</RY_XB>
<RY_GWMC>输入输出员</RY_GWMC>
<RY_ZZMM>民盟盟员</RY_ZZMM>
<RY_RYMJ>一般</RY_RYMJ>
<RY_RYZT>在职不在岗</RY_RYZT>
<RY_RYXXZT>待岗</RY_RYXXZT>
<RY_SFZHM>33226544334323456</RY_SFZHM>
<RY_RSSJ>2015.08</RY_RSSJ>
<RY_CSRQ>2019.10</RY_CSRQ>
<RY_GWXXHGZJL/>
<RY_YGXZ>公司企业合同制</RY_YGXZ>
</RY>
-<RY>
<RY_RYBM>19000004</RY_RYBM>
<RY_YHZWM>六三</RY_YHZWM>
<RY_MZ>汉族</RY_MZ>
<RY_JG>陕西西安安康</RY_JG>
<ZH_ID>1005454</ZH_ID>
<RY_XZZW>研发中心副主任</RY_XZZW>
<RY_XB>男</RY_XB>
<RY_GWMC>输入输出员</RY_GWMC>
<RY_ZZMM>中共党员</RY_ZZMM>
<RY_RYMJ>一般</RY_RYMJ>
<RY_RYZT>退休</RY_RYZT>
<RY_RYXXZT>返聘</RY_RYXXZT>
<RY_SFZHM>46786544334323456</RY_SFZHM>
<RY_RSSJ>1999.10</RY_RSSJ>
<RY_CSRQ>1966.10</RY_CSRQ>
<RY_GWXXHGZJL/>
<RY_YGXZ>事业聘用制</RY_YGXZ>
</RY>
</LIST>
最后存储到emplist 集合里,util类,可直接调用