DOM4J介绍
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP,使用需要引用dom4j.jar包
XML生成及解析
代码如下:
1 package com.test.dom4j; 2 3 import java.io.File; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 import java.io.Writer; 7 import java.util.Iterator; 8 9 import org.dom4j.Document; 10 import org.dom4j.DocumentException; 11 import org.dom4j.DocumentHelper; 12 import org.dom4j.Element; 13 import org.dom4j.io.OutputFormat; 14 import org.dom4j.io.SAXReader; 15 import org.dom4j.io.XMLWriter; 16 17 public class TestDom4j { 18 19 public static void main(String[] args) { 20 createXml(); 21 parserXml(); 22 } 23 24 // Dom4j创建Xml文档 25 public static void createXml() { 26 // 创建一个文档对象 27 Document document = DocumentHelper.createDocument(); 28 // 在根节点添加元素 29 Element conpany = document.addElement("conpany"); 30 // 在conpany下添加子节点 31 Element department = conpany.addElement("department"); 32 // 在department下添加子节点 33 Element employee = department.addElement("employee"); 34 // 给employee节点添加内容 35 employee.setText("123"); 36 // 给employee节点添加内容 37 employee.addAttribute("name", "employee1"); 38 try { 39 Writer fileWriter = new FileWriter("src/test-dom4j-create.xml"); 40 41 //输出格式 42 OutputFormat xmlFormat = new OutputFormat(); 43 //设置编码 44 xmlFormat.setEncoding("UTF-8"); 45 // 设置换行 46 xmlFormat.setNewlines(true); 47 //自动缩进 48 xmlFormat.setIndent(true); 49 // 使用4个空格进行缩进, 可以兼容文本编辑器 50 xmlFormat.setIndent(" "); 51 52 //輸出 53 XMLWriter xmlWriter = new XMLWriter(fileWriter,xmlFormat); 54 xmlWriter.write(document); 55 xmlWriter.close(); 56 } catch (IOException e) { 57 System.out.println(e.getMessage()); 58 } 59 60 } 61 62 63 // Dom4j解释Xml文档 64 public static void parserXml() { 65 //文件 66 File inputXml = new File("src/test-dom4j-create.xml"); 67 //解析器 68 SAXReader saxReader = new SAXReader(); 69 try { 70 //得到文档 71 Document document = saxReader.read(inputXml); 72 //根目录 73 Element conpany = document.getRootElement(); 74 for (Iterator i = conpany.elementIterator(); i.hasNext();) { 75 Element department = (Element) i.next(); 76 for (Iterator j = department.elementIterator(); j.hasNext();) { // 遍例节点 77 Element employee = (Element) j.next(); 78 //获取元素的文本以及属性 79 System.out.println(employee.getName() + "\t" + employee.getText() + "\t" + employee.attributeValue("name")); 80 } 81 82 } 83 } catch (DocumentException e) { 84 System.out.println(e.getMessage()); 85 } 86 } 87 }
生成的文本:
控制台输出: