解析(传输)XML文件三

一、客户端以XML格式向服务器端发送数据,并解析XML输出到控制台要求如下:

客户端以XML格式向服务器端发送数据,详细要求如下:
1)客户端读取myemp.xml数据,将其发送到服务器端。
2)服务器接收到XML格式的数据后,进行解析,将解析到的数据输出到控制台。

实体类:

public class Emp {
    private int id;
    private String name;
    private int age;
    private String gender;
    private int salary;
    public Emp(int id, String name, int age, String gender, int salary) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.salary = salary;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public String toString(){
        return id+","+name+","+age+","+gender+","+salary;
    }
}

客户端代码:

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("192.168.121.1",8088);
    }
    public void start(){
        try {
            //获取输出流
            OutputStream out = socket.getOutputStream();
            File file = new File("demo00/src/csxml/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();
            System.out.println("准备传输。。。。");
            c.start();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("客户端初始化失败");
        }
    }
}

xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<list>
  <emp id="1">
    <name>张三</name>
    <age>22</age>
    <gender>男</gender>
    <salary>6000</salary>
  </emp>
  <emp id="2">
    <name>李四</name>
    <age>23</age>
    <gender>女</gender>
    <salary>10000</salary>
  </emp>
  <emp id="3">
    <name>王五</name>
    <age>19</age>
    <gender>男</gender>
    <salary>9000</salary>
  </emp>
  <emp id="4">
    <name>赵六</name>
    <age>30</age>
    <gender>男</gender>
    <salary>22000</salary>
  </emp>
  <emp id="5">
    <name>宋七</name>
    <age>28</age>
    <gender>男</gender>
    <salary>4000</salary>
  </emp>
  <emp id="6">
    <name>王八</name>
    <age>29</age>
    <gender>男</gender>
    <salary>7000</salary>
  </emp>
</list>

服务端代码:

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 org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import test.pojo.Emp;

//服务端
public class Server {
    private ServerSocket server;
    public Server() throws IOException{
        server = new ServerSocket(8088);
    }
    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格式向服务器端发送数据,详细要求如下:

1)客户端读取myemp.xml中的数据,将其发送到服务器端。

2)服务器接收到XML格式的数据后,将其输出到serverMyemp.xml文件中。

客户端:

import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client1 {
    private Socket socket;
    public Client1() throws UnknownHostException, IOException {
        socket = new Socket("192.168.121.1",8088);
    }
    public void start(){
        try{
            OutputStream out = socket.getOutputStream();
            //创建SAXReader,读取指定文件
            SAXReader reader = new SAXReader();
            File file = new File("demo00/src/csxml/myemp.xml");
            Document doc = reader.read(file);
            //创建XML输出流
            XMLWriter writer = new XMLWriter();
            writer.setOutputStream(out);
            writer.write(doc);
        } catch(Exception e){
            e.printStackTrace();
        } finally {//只关socket
            if(socket != null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public static void main(String[] args) {
        Client1 c;
        try {
            c = new Client1();
            c.start();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("客户端初始化失败!");
        }
    }
}

服务端:

import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server1 {
    private ServerSocket server1;
    public Server1() throws IOException {
        server1 = new ServerSocket(8088);
    }
    public void start(){
        XMLWriter writer = null;
        try{
            System.out.println("等待连接......");
            Socket socket = server1.accept();
            System.out.println("连接客户端成功!");
            InputStream in = socket.getInputStream();
            //读取用户发送过来的xml
            SAXReader reader = new SAXReader();
            Document doc = reader.read(in);

            //写出xml到day08包中
            FileOutputStream fos = new FileOutputStream("demo00/src/csxml/servermyemp.xml");
            writer = new XMLWriter();
            writer.setOutputStream(fos);
            writer.write(doc);
            System.out.println("服务端接受文件成功!");
        } catch(Exception e){
            e.printStackTrace();
        } finally {//writer和server都要关
            if(writer != null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(server1 != null){
                try {
                    server1.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        try {
            Server1 s = new Server1();
            s.start();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("服务端初始化失败!");
        }
    }
}

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值