dom4j解析XML文件(4)—实战

任务目标

服务器: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 }
时间: 2024-11-13 09:09:28

dom4j解析XML文件(4)—实战的相关文章

【java项目实战】dom4j解析xml文件,连接Oracle数据库

简介 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方,我们还是看一下官方给出的解释.如下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT等语言的库.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准. 特点 dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例

使用DOM4J解析XMl文件与读取XML文件

XML文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <bookstore> 3 <book id="1"> 4 <name>冰与火之歌</name> 5 <author>乔治马丁</author> 6 <year>2014</year> 7 <price>89</price&g

用DOM4J解析XML文件案例

用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图: 1.xml文件 <?xml version="1.0" encoding="UTF-8"?> <class> <student> <name>张三</name> <sid>111111</sid> </student> <stude

在java项目中怎样利用Dom4j解析XML文件获取数据

在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进行直接读取,能够说这是程序中直接封装好的,包含配置文件里书写的格式等等.那么,假设.想要在配置文件里写一些其它的数据,直接以XML文件的格式进行书写.这个时候在后台怎样读取XML文件里的数据呢?这里利用Dom4j来解析XML文件里连接oracle数据库的xml数据. 在使用之前,首先要在自己的项目中

在java项目中如何利用Dom4j解析XML文件获取数据

在以前的学习.net时经常会遇到利用配置文件来解决项目中一些需要经常变换的数据,比如数据库的连接字符串儿等.这个时候在读取配置文件的时候,我们通常会用到一个雷configuration,通过这个类来进行直接读取,可以说这是程序中直接封装好的,包括配置文件中书写的格式等等.那么,如果,想要在配置文件中写一些其他的数据,直接以XML文件的格式进行书写,这个时候在后台如何读取XML文件中的数据呢?这里利用Dom4j来解析XML文件中连接oracle数据库的xml数据. 在使用之前,首先要在自己的项目中

java dom4j 解析XML文件 简易教程

XML 来自: W3School XML 被设计用来传输和存储数据. HTML 被设计用来显示数据. 什么是 XML? eXtensible Markup Language XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义.您需要自行定义标签. XML 被设计为具有自我描述性. XML 是 W3C 的推荐标准 XML 与 HTML 的主要差异 XML 不

java中采用dom4j解析xml文件

一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4j解析xml的具体操作. 二.代码详情    dom4j是一个第三方开发组开发出的插件,所以在我们使用dom4jf的时候我们要去下载一下dom4j对应版本的jar导入在我们项目中.  1)xml文件: <?xml version="1.0" encoding="UTF-8&

1.使用dom4j解析XML文件

一.dom4j的简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它.在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能.功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的.如今可以看到越

DOM4j解析XML文件

1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP. DOM4J 使用起来非常简单.只要你了解基本的 XML-DOM 模型,就能使用. Dom:把整个文档作为一个对象. DOM4J 最大的特色是使用大量的接口.它的主要接口都在org.dom4j里面定义: Attribute 定义了 XML 的属性. Branch 指能够包含子节点的节点.如XML元素(Eleme