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 }
转载于:https://www.cnblogs.com/miyin/p/4043684.html
dom4j解析XML文件(4)—实战相关推荐
- java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...
网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...
- 使用dom4j解析XML文件
为什么80%的码农都做不了架构师?>>> dom4j是一个java 的XML API,用来读写XML文件. 使用dom4j解析XML文件,首先需要在官网下载dom4j-1.6. ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- 使用DOM4J解析XML文件代码
DOM4J解析XML文件 public class DOM4JTest1 {public static void main(String[] args) throws DocumentExceptio ...
- Java中DOM4J解析xml文件浅析
DOM4J解析它是JDOM的一种智能分支.它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持.XML Schema支持以及用于大文档或流化文档的基于事件的处理.它还提供了构建文档表 ...
- 一、dom4j技术--使用dom4j解析xml文件
dom4j解析xml文件 一.导包,编写bean类和测试类 二.编码测试,通过dom4j生成bean对象 books.xml <?xml version="1.0" enco ...
- java jdom dom4j_Java基础系列17:使用DOM、SAX、JDOM、DOM4J解析XML文件详解
一 简介 在Java中,可以使用多种方式来解析XML文件,其中最常见的可能就是DOM.SAX.JDOM.DOM4J这四种方式了.其中,DOM和SAX这两种解析XML文件的方式有jdk自带的API,因此 ...
- dom4j解析xml文件
一.用SAXReader 方式解析:实例测试类TestXML package * import java.io.ByteArrayInputStream; import java.util ...
- Java - DOM4J解析XML文件
文章目录 1. XML文档说明 2. XML解析 2.1 常见的解析方式 2.2 DOM4J解析xml 2.3 XPath表达式解析XML 3. 解析XML并封装到类中 4. 参考资料 1. XML文 ...
- java使用DOM4j解析XML文件
1.简介 dom4j是java中的XML API,性能优异.功能强大.开放源代码. 也是所有解析XML文件方法中最常用的! 2.代码实操 准备需要j的ar包添加到lib目录下,dom4j-2.1.1. ...
最新文章
- linux + ffmpeg + eclipse 调试
- 请编写fun()函数,函数的功能是删去一维数组中相同的数据在一起出现的数,相同的数只保留一个
- 不要在递归中使用静态容器
- idea去掉无用import类_@Import注解的魅力
- 帕金森定律(Parkinson's Law)
- keil的主要功能和作用_组合式空调机组各功能段的主要作用
- 【mysql系列】细谈explain执行计划之“谜”
- iOS 使用Socket
- UITextView的使用详解
- (转)百度金融联合多方发布国内首单区块链证券化项目 发行规模超4亿
- 最值得收藏的几种文档对比、文本对比、代码对比、文件对比的工具
- sim7020c功耗_SIM7020C NB-IoT HAT教程
- 谷歌flash无法输入中文
- PRD:腾讯会议APP产品需求文档
- opengl学习笔记
- NTFS交换数据流隐藏文件
- 老生常谈-forwar的与redirect的区别与联系
- mysql主从配置干什么_mysql主从配置之slave_exec_mode=IDEMPOTENT详解
- 最新小程序反编译详细教程,亲测可用
- Adobe国际认证证书对于设计师而言,真的很重要?
热门文章
- [读书笔记]机器学习:实用案例解析(4)
- C++ traits学习笔记(一)
- vs2008 jQuery 智能提示失败可能是Jquery版本问题
- 女孩必读:打死不能嫁的36种男人
- Unity Transform bug
- mybatis在oracle数据库中获取主键
- android 百度定位 sdk 3.3demo,BaiduMapApi_Sample_Android_1.3.3\demo无法启动
- Hibernate的双向N-N关联(六)
- [渝粤教育] 中国地质大学 中外美术史 复习题 (2)
- 使用git软件上传文件到自己的github当中去