dom4j生成和解析xml文件

要生成和解析如下格式的xml文件:

1李寻欢301广东省广州市越秀区环市东路

  1、两个数据实体类

    1)User类

/** * @Description: 用户 User {private Long id; String name; Integer age; 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: 地址 Address {private Long id; String province; String city; String area; 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 XmlUtil {/*** 生成xml文档* @param user 用户信息* Document generateDocument(User user) {Document document = DocumentHelper.createDocument();//添加元素 MessageElement messageElement = document.addElement(“Message”);messageElement.addAttribute(“xmlns:xs”, “http://www.w3.org/2001/XMLSchema”);//添加元素 UserElement userElement = messageElement.addElement(“User”);//添加User子元素 idElement idElement = userElement.addElement(“id”);//给id元素赋值idElement.setText(String.valueOf(user.getId()));//添加User子元素 nameElement nameElement = userElement.addElement(“name”);//给name元素赋值nameElement.setText(user.getName());//添加User子元素 ageElement ageElement = userElement.addElement(“age”);//给age元素赋值ageElement.setText(String.valueOf(user.getAge()));//添加User子元素 AddressElement addressElement = userElement.addElement(“Address”);//添加Address子元素 idElement addressIdElement = addressElement.addElement(“id”);//给id元素赋值addressIdElement.setText(String.valueOf(user.getAddress().getId()));//添加Address子元素 provinceElement provinceElement = addressElement.addElement(“province”);//给province元素赋值provinceElement.setText(user.getAddress().getProvince());//添加Address子元素 cityElement cityElement = addressElement.addElement(“city”);//给city元素赋值cityElement.setText(user.getAddress().getCity());//添加Address子元素 areaElement areaElement = addressElement.addElement(“area”);//给area元素赋值areaElement.setText(user.getAddress().getArea());//添加Address子元素 streetElement streetElement = addressElement.addElement(“street”);//给street元素赋值streetElement.setText(user.getAddress().getStreet());return document;}/*** 生成xml文件 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 DocumentExceptionUser analyzeXmlFile(File xmlFile) throws DocumentException {SAXReader saxReader = new SAXReader();Document document = saxReader.read(xmlFile);//获取根元素MessageElement 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”.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());}}}}//将解析出来的数据封装成UserUser 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、测试

别想一下造出大海,必须先由小河川开始。

dom4j生成和解析xml文件

相关文章:

你感兴趣的文章:

标签云: