用java实现xml的接收并且转换成List

用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类,可直接调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值