1、要生成和解析如下格式的xml文件:
<?xml version="1.0" encoding="UTF-8"?> <Message xmlns:xs="http://www.w3.org/2001/XMLSchema"> <User> <id>1</id> <name>李寻欢</name> <age>30</age> <Address> <id>1</id> <province>广东省</province> <city>广州市</city> <area>越秀区</area> <street>环市东路</street> </Address> </User> </Message>
2、两个数据实体类
1)User类
/** * @Description: 用户 */ public class User { private Long id; //姓名 private String name; //年龄 private Integer age; //地址 private Address address; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
2)Address类
/** * * @Description: 地址 */ public class Address { private Long id; //省份 private String province; //城市 private String city; //区县 private String area; //街道 private String street; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getArea() { return area; } public void setArea(String area) { this.area = area; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } }
3、使用dom4j生成xml和解析xml的工具类
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * * @Description: Xml生成解析工具 * @author Luxh */ public class XmlUtil { /** * 生成xml文档 * @param user 用户信息 * @return */ private static Document generateDocument(User user) { Document document = DocumentHelper.createDocument(); //添加元素 Message Element messageElement = document.addElement("Message"); //给Message元素添加属性 xmlns:xs="http://www.w3.org/2001/XMLSchema" messageElement.addAttribute("xmlns:xs", "http://www.w3.org/2001/XMLSchema"); //添加元素 User Element userElement = messageElement.addElement("User"); //添加User子元素 id Element idElement = userElement.addElement("id"); //给id元素赋值 idElement.setText(String.valueOf(user.getId())); //添加User子元素 name Element nameElement = userElement.addElement("name"); //给name元素赋值 nameElement.setText(user.getName()); //添加User子元素 age Element ageElement = userElement.addElement("age"); //给age元素赋值 ageElement.setText(String.valueOf(user.getAge())); //添加User子元素 Address Element addressElement = userElement.addElement("Address"); //添加Address子元素 id Element addressIdElement = addressElement.addElement("id"); //给id元素赋值 addressIdElement.setText(String.valueOf(user.getAddress().getId())); //添加Address子元素 province Element provinceElement = addressElement.addElement("province"); //给province元素赋值 provinceElement.setText(user.getAddress().getProvince()); //添加Address子元素 city Element cityElement = addressElement.addElement("city"); //给city元素赋值 cityElement.setText(user.getAddress().getCity()); //添加Address子元素 area Element areaElement = addressElement.addElement("area"); //给area元素赋值 areaElement.setText(user.getAddress().getArea()); //添加Address子元素 street Element streetElement = addressElement.addElement("street"); //给street元素赋值 streetElement.setText(user.getAddress().getStreet()); return document; } /** * 生成xml文件 */ public static void generateXmlFile(User user) { Document document = generateDocument(user); XMLWriter out = null; BufferedWriter bw = null; OutputStreamWriter osw = null; FileOutputStream fos = null; try { File xmlFile = new File("D:/user.xml");//输出xml的路径 fos = new FileOutputStream(xmlFile); osw = new OutputStreamWriter(fos,"UTF-8");//指定编码,防止写中文乱码 bw = new BufferedWriter(osw); //对xml输出格式化 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); out = new XMLWriter(bw, format); out.write(document); } catch (IOException e) { e.printStackTrace(); }finally { try { if(out != null) { out.close(); } if(bw != null) { bw.close(); } if(osw != null) { osw.close(); } if(fos != null) { fos.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * 解析xml文件 * @param xmlFile * @return * @throws DocumentException */ public static User analyzeXmlFile(File xmlFile) throws DocumentException { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(xmlFile); //获取根元素Message Element messageElement = document.getRootElement(); //获取Message元素下的子元素 Iterator<Element> oneLevelElementItor = messageElement.elementIterator(); Map<String,String> userAttrMap = new HashMap<String,String>(); Map<String,String> addressAttrMap = new HashMap<String,String>(); while(oneLevelElementItor.hasNext()){ Element e1 = oneLevelElementItor.next(); System.out.println("Message子元素:"+e1.getName()); //获取User元素下的子元素 Iterator<Element> twoLevelElementItor = e1.elementIterator(); while(twoLevelElementItor.hasNext()) { Element e2 = twoLevelElementItor.next(); System.out.println("User子元素:"+e2.getName()); userAttrMap.put(e2.getName(), e2.getText()); //获取Address下的子元素 if("Address".equals(e2.getName())) { Iterator<Element> threeLevelElementItor = e2.elementIterator(); while(threeLevelElementItor.hasNext()) { Element e3 = threeLevelElementItor.next(); System.out.println("Address子元素:"+e3.getName()); addressAttrMap.put(e3.getName(), e3.getText()); } } } } //将解析出来的数据封装成User User user = new User(); user.setId(Long.valueOf(userAttrMap.get("id"))); user.setName(userAttrMap.get("name")); user.setAge(Integer.valueOf(userAttrMap.get("age"))); Address address = new Address(); address.setId(Long.valueOf(addressAttrMap.get("id"))); address.setProvince(addressAttrMap.get("province")); address.setCity(addressAttrMap.get("city")); address.setArea(addressAttrMap.get("area")); address.setStreet(addressAttrMap.get("street")); user.setAddress(address); return user; } }
4、测试
import java.io.File; import org.dom4j.DocumentException; import org.junit.Test; public class UserXmlTest { /** * 生成xml文件 */ @Test public void testGenerateXml() { //构造一个用户信息 User user = new User(); user.setId(1L); user.setName("李寻欢"); user.setAge(30); Address address = new Address(); address.setId(1L); address.setProvince("广东省"); address.setCity("广州市"); address.setArea("越秀区"); address.setStreet("环市东路"); user.setAddress(address); XmlUtil.generateXmlFile(user); } /** * 解析xml文件 * @throws DocumentException */ @Test public void testAnalyzeXmlFile() throws DocumentException { File xmlFile = new File("D:/user.xml"); User user = XmlUtil.analyzeXmlFile(xmlFile); System.out.println("user'name is :"+user.getName()); System.out.println("user'address'province is :"+user.getAddress().getProvince()); } }
相关推荐
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单易行。在Java世界中,DOM4J是与DOM、SAX和JDOM等其他XML处理库并驾齐驱的一个选择,尤其在处理...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、查询和修改变得更为简单。在本文中,我们将深入探讨DOM4J 1.6.1版本的安装及其在Maven项目中的应用。 首先,DOM4J...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。这次我们有两个版本的DOM4J库:1.6.1和2.0.0-ALPHA。这两个版本在功能、性能和API设计上都有所...
标题提及的"dom4j_1.6.1.jar"和"dom4j_2.1.0.jar"是两个不同版本的DOM4J库的Java档案文件,DOM4J是一个非常流行的Java XML API,用于处理XML文档。这两个版本的差异在于功能、性能优化和可能存在的bug修复。描述中...
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的API,使得开发者可以方便地读取、写入、修改以及操作XML文件。DOM4J 1.6.1是这个库的一个稳定版本,发布于较早时期,但依然广泛应用于许多Java...
另一份重要的资源是"dom4j-2.1.3-sources.jar",它提供了DOM4J库的源代码,允许开发者深入研究DOM4J的内部实现,对于理解DOM4J的工作原理、进行扩展或者调试都是不可或缺的。通过阅读源代码,开发者可以学习到如何...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于“Document Object Model for Java”,但它并不仅仅是一个DOM实现,它还包含...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于“Document Object Model for Java”,它采用面向对象的设计思想,提供了...
《深入解析DOM4J——基于Java的XML处理框架》 DOM4J,作为一个强大的Java XML API,是处理XML文档的主流工具之一。它提供了一套简单而高效的方式来操作XML文档,包括读取、写入、修改和遍历XML结构。在Java开发中,...
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的XML解析器,提供了丰富的API来创建、修改和操作XML数据。在Java应用程序中,DOM4J作为一个流行的选择,尤其在处理复杂的XML结构时,因为它...
标题提到的"所有版本的dom4j工具包"表明这是一个包含多版本DOM4J库的集合,可能包括了从早期到较新的一些版本,如dom4j-1.4.jar、dom4j-1.6.1.jar和dom4j-1.5.2.jar。这些不同版本的库可能分别对应于不同的功能特性...
DOM4J 2.1.1 是一个针对Java平台的高效、开源的XML处理库,其全称为“Document Object Model for Java”。这个库提供了一系列强大的API,使得开发人员能够轻松地解析、创建、修改和操作XML文档。XML(eXtensible ...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的方式来解析、创建、操作和理解XML数据。这个库在Java开发中广泛使用,因为它提供了比标准Java DOM API更简单、性能更好的XML处理方式。以下是...
当我们遇到“java.lang.ClassNotFoundException: org.dom4j.DocumentException”的错误提示时,这通常意味着系统中缺少了DOM4j库,只需将“org.dom4j.jar”添加到项目类路径中即可解决此问题。 DOM4J是基于DOM和SAX...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高性能的API,使得在Java应用程序中解析、创建、修改和操作XML文档变得容易。DOM4J因其易用性和丰富的功能集,在Java社区中广受欢迎,尤其在处理大型...
DOM4J 的使用 DOM4J 是一个开源的 XML 解析包,由 dom4j.org 出品,应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM、SAX 和 JAXP。DOM4J 的主要特点是使用大量的接口,所有主要接口都在 org.dom4j 里面定义...