任务目标

服务器:1.服务器将List对象存入XML文件中,XML文件名为emp5.xml

    2.服务器读取XML文件,将文件发送给客户端

客户端:1.客户端接受服务器发送的XML文件,将文件存入磁盘

    2.读取存入的XML文件,解析,然后转为List对象,在控制台打印输出

Emp.java

 1 package XMLServiceAndClient;
 2
 3 public class Emp {
 4     private int id;
 5     private String name;
 6     private int age;
 7     private double salary;
 8     public int getId() {
 9         return id;
10     }
11     public void setId(int id) {
12         this.id = id;
13     }
14     public String getName() {
15         return name;
16     }
17     public void setName(String name) {
18         this.name = name;
19     }
20     public int getAge() {
21         return age;
22     }
23     public void setAge(int age) {
24         this.age = age;
25     }
26     public double getSalary() {
27         return salary;
28     }
29     public void setSalary(double salary) {
30         this.salary = salary;
31     }
32     @Override
33     public String toString() {
34         return "Emp [id=" + id + ", name=" + name + ", age=" + age
35                 + ", salary=" + salary + "]";
36     }
37     public Emp() {
38     }
39     public Emp(int id, String name, int age, double salary) {
40         super();
41         this.id = id;
42         this.name = name;
43         this.age = age;
44         this.salary = salary;
45     }
46
47
48 }

服务器:

 1 package XMLServiceAndClient;
 2
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.OutputStream;
 8 import java.net.ServerSocket;
 9 import java.net.Socket;
10 import java.util.ArrayList;
11 import java.util.List;
12
13 import org.dom4j.Document;
14 import org.dom4j.DocumentHelper;
15 import org.dom4j.Element;
16 import org.dom4j.io.XMLWriter;
17
18 /**
19  *步骤:    1.服务器将List对象存入XML文件中,XML文件名为emp5.xml
20  *        2.服务器读取XML文件,将文件发送给客户端
21  */
22 public class Service {
23     private ServerSocket ss;
24     private int port = 8080;
25     private List<Emp> list;
26     /**利用构造函数初始化ServerSocket*/
27     public Service(){
28         try {
29             ss = new ServerSocket(port);
30             list = new ArrayList<Emp>();
31             list.add(new Emp(1,"张三",20,2000));
32             list.add(new Emp(2,"李四",30,4000));
33             list.add(new Emp(3,"王五",40,6000));
34         } catch (IOException e) {
35             e.printStackTrace();
36         }
37     }
38     /**服务器启动*/
39     public void start(){
40         try {
41             Socket s = ss.accept();//等待客户端进入
42             OutputStream os = s.getOutputStream();//获取输出流
43             Document doc = DocumentHelper.createDocument();//获取document对象
44             Element root = doc.addElement("list");
45             for (Emp emp : list) {
46                 Element e = root.addElement("emp");
47                 e.addAttribute("id", ""+emp.getId());
48                 e.addElement("name").addText(emp.getName());
49                 e.addElement("age").addText(""+emp.getAge());
50                 e.addElement("salary").addText(""+emp.getSalary());
51             }
52             FileOutputStream fos = new FileOutputStream(new File("emp5.xml"));
53             XMLWriter writer = new XMLWriter();
54             writer.setOutputStream(fos);
55             writer.write(doc);//将document输出到XML文件
56             writer.close();
57             fos.close();
58             FileInputStream fis = new FileInputStream(new File("emp5.xml"));
59             byte[] buf = new byte[1024];//设置缓冲区大小
60             int size = -1;
61             while((size=fis.read(buf))!=-1){
62                 os.write(buf, 0, size);
63             }
64             fis.close();
65             s.close();
66         } catch (IOException e) {
67             e.printStackTrace();
68         }
69     }
70     public static void main(String[] args) {
71         Service s = new Service();
72         s.start();
73     }
74 }

客户端:

 1 package XMLServiceAndClient;
 2
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.InputStream;
 6 import java.net.Socket;
 7 import java.util.ArrayList;
 8 import java.util.List;
 9
10 import org.dom4j.Document;
11 import org.dom4j.Element;
12 import org.dom4j.io.SAXReader;
13
14
15 /**
16  *步骤:    1.客户端接受服务器发送的XML文件,将文件存入磁盘
17  *        2.读取存入的XML文件,解析,然后转为List对象,在控制台打印输出
18  */
19 public class Client {
20     private Socket s;
21     private int port = 8080;
22     private List<Emp> list;
23
24     public void start(){
25         try {
26             s = new Socket("localhost", port);
27             InputStream is = s.getInputStream();
28             FileOutputStream fos = new FileOutputStream(new File("emp6.xml"));
29             byte[] buf = new byte[1024];//设置缓冲区大小
30             int size = -1;
31             while((size=is.read(buf))!=-1){
32                 fos.write(buf, 0, size);
33             }
34             fos.close();
35             s.close();
36             list = new ArrayList<Emp>();
37             SAXReader reader = new SAXReader();
38             Document doc = reader.read(new File("emp6.xml"));
39             Element root = doc.getRootElement();
40             List<Element> elements = root.elements();
41             for (Element element : elements) {
42                 Emp emp = new Emp();
43                 emp.setId(Integer.parseInt(element.attribute("id").getValue()));
44                 emp.setName(element.element("name").getText());
45                 emp.setAge(Integer.parseInt(element.element("age").getText()));
46                 emp.setSalary(Double.parseDouble(element.element("salary").getText()));
47                 list.add(emp);
48             }
49             System.out.println(list);
50         } catch (Exception e) {
51             e.printStackTrace();
52         }
53     }
54
55     public static void main(String[] args) {
56         Client c = new Client();
57         c.start();
58
59     }
60 }

转载于:https://www.cnblogs.com/miyin/p/4043684.html

dom4j解析XML文件(4)—实战相关推荐

  1. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  2. 使用dom4j解析XML文件

    为什么80%的码农都做不了架构师?>>>    dom4j是一个java 的XML API,用来读写XML文件. 使用dom4j解析XML文件,首先需要在官网下载dom4j-1.6. ...

  3. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  4. 使用DOM4J解析XML文件代码

    DOM4J解析XML文件 public class DOM4JTest1 {public static void main(String[] args) throws DocumentExceptio ...

  5. Java中DOM4J解析xml文件浅析

      DOM4J解析它是JDOM的一种智能分支.它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持.XML Schema支持以及用于大文档或流化文档的基于事件的处理.它还提供了构建文档表 ...

  6. 一、dom4j技术--使用dom4j解析xml文件

    dom4j解析xml文件 一.导包,编写bean类和测试类 二.编码测试,通过dom4j生成bean对象 books.xml <?xml version="1.0" enco ...

  7. java jdom dom4j_Java基础系列17:使用DOM、SAX、JDOM、DOM4J解析XML文件详解

    一 简介 在Java中,可以使用多种方式来解析XML文件,其中最常见的可能就是DOM.SAX.JDOM.DOM4J这四种方式了.其中,DOM和SAX这两种解析XML文件的方式有jdk自带的API,因此 ...

  8. dom4j解析xml文件

    一.用SAXReader 方式解析:实例测试类TestXML     package *   import java.io.ByteArrayInputStream; import java.util ...

  9. Java - DOM4J解析XML文件

    文章目录 1. XML文档说明 2. XML解析 2.1 常见的解析方式 2.2 DOM4J解析xml 2.3 XPath表达式解析XML 3. 解析XML并封装到类中 4. 参考资料 1. XML文 ...

  10. java使用DOM4j解析XML文件

    1.简介 dom4j是java中的XML API,性能优异.功能强大.开放源代码. 也是所有解析XML文件方法中最常用的! 2.代码实操 准备需要j的ar包添加到lib目录下,dom4j-2.1.1. ...

最新文章

  1. linux + ffmpeg + eclipse 调试
  2. 请编写fun()函数,函数的功能是删去一维数组中相同的数据在一起出现的数,相同的数只保留一个
  3. 不要在递归中使用静态容器
  4. idea去掉无用import类_@Import注解的魅力
  5. 帕金森定律(Parkinson's Law)
  6. keil的主要功能和作用_组合式空调机组各功能段的主要作用
  7. 【mysql系列】细谈explain执行计划之“谜”
  8. iOS 使用Socket
  9. UITextView的使用详解
  10. (转)百度金融联合多方发布国内首单区块链证券化项目 发行规模超4亿
  11. 最值得收藏的几种文档对比、文本对比、代码对比、文件对比的工具
  12. sim7020c功耗_SIM7020C NB-IoT HAT教程
  13. 谷歌flash无法输入中文
  14. PRD:腾讯会议APP产品需求文档
  15. opengl学习笔记
  16. NTFS交换数据流隐藏文件
  17. 老生常谈-forwar的与redirect的区别与联系
  18. mysql主从配置干什么_mysql主从配置之slave_exec_mode=IDEMPOTENT详解
  19. 最新小程序反编译详细教程,亲测可用
  20. Adobe国际认证证书对于设计师而言,真的很重要?

热门文章

  1. [读书笔记]机器学习:实用案例解析(4)
  2. C++ traits学习笔记(一)
  3. vs2008 jQuery 智能提示失败可能是Jquery版本问题
  4. 女孩必读:打死不能嫁的36种男人
  5. Unity Transform bug
  6. mybatis在oracle数据库中获取主键
  7. android 百度定位 sdk 3.3demo,BaiduMapApi_Sample_Android_1.3.3\demo无法启动
  8. Hibernate的双向N-N关联(六)
  9. [渝粤教育] 中国地质大学 中外美术史 复习题 (2)
  10. 使用git软件上传文件到自己的github当中去