dom4j生成和解析xml文件
要生成和解析如下格式的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>

1、两个数据实体类
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;
- }
- }
2、使用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;
- }
- }
3、测试
- 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生成和解析xml文件的更多相关文章
- 使用dom4j创建和解析xml文件
使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...
- DOM4J生成、解析XML实例
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterato ...
- C++生成和解析XML文件
1.xml 指可扩展标记语言(EXtensible Markup Language) 2.xml 是一种标记语言,类似html 3.xml 的设计宗旨是传输数据,而非显示数据 4.xml 标签没有被预 ...
- dom4j生成、解析xml
/** * 创建xml * @param obj 泛型对象 * @param entityPropertys 泛型对象的List集合 * @param Encode XML自定义编码类型 * @par ...
- C#生成、解析xml文件以及处理报错原因
转载自:http://blog.csdn.net/lilinoscar/article/details/21027319 简单的介绍一下生成XML文件以及解析,因为有些数据不一定放到数据库,减少链接数 ...
- 使用Dom4j的xPath解析xml文件------xpath语法
官方语法地址:http//www.w3school.com.cn/xpath/index.asp xpath使用路径表达式来选取xml文档中的节点或节点集.节点是通过沿着路径(path)或者步(ste ...
- Java中使用DOM4J来生成xml文件和解析xml文件
一.前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 使用DOM4J解析XMl文件与读取XML文件
XML文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...
随机推荐
- Android.mk与jni目录的关系
附1: Android.mk与jni目录的关系: 在某目录下,如/src/modules1/下存放Android.mk和Application.mk,调用ndk-build试图编译时,会遇到如下错误: ...
- android平台菜单返回键监听
//声明 void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event); //实现 //按键控制(检测onKeyReleased有反 ...
- ExtJS3.4升级ExtJS4.2的问题汇总(转)
ExtJS3.4升级ExtJS4.2的问题汇总 昨天心血来潮,想把自己用extjs3.4作为UI的一个原型升级到最新的extjs4.2.2. 几年前曾经将原型从2.1升级到3.4,对于extjs的版本 ...
- 转:LoadRunner中参数化技术详解
LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提 ...
- maven学习笔记 1
1 概述 1.1 Maven是什么 1.2 为什么要用Maven 2 怎么用Maven 2.1 Maven仓库 2.2 Maven安装 2.3 Eclipse插件 2.4 Maven常用命 ...
- Windows下python安装MySQLdb
安装MySQLdb需要在电脑上安装MySQL connector C,只需要这个connector就好,不需要把mysql装全. 另外,需要安装VC for python提供编译. 到官网上下载脚本进 ...
- C++读取excel特定行列中的数据
可以通过COM API调用才是正解,不过需要编写COM接口类,Excel对象库的接口太多了……不过可以用工具自动生成. 我最近也在用VC操作Excel,在VC中可以这样做,在任何一个cpp文件中加入下 ...
- mysql查询数据库约束
SELECT * FROM information_schema.`TABLE_CONSTRAINTS` where TABLE_SCHEMA='mold' and TABLE_NAME='tplmi ...
- shell与if相关参数
[ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ ...
- linux操作命令实验
实验内容:文件操作与用户操作实验 实验设备(环境):电脑.Vmware WorkStation 实验步骤: 一.创建新用户bob 目的:练习useradd命令 二.为新用户bob设置口令 目的:练习p ...