Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。很多Java软件读写XML都在使用dom4j,Sun公司的JAXM也是用dom4j。Hibernate用它来读写配置文件。
DOM4J官网下载地址:
DOM4J解析xml文档实例
package cn.iborder.xml;import java.io.File;import java.util.Iterator;import java.util.List;import java.util.Scanner;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class Dom4jParseXml { //指定xml文件作为解析对象 public File getXmlFile() { Scanner scanner = new Scanner(System.in); System.out.println("请输入要解析的xml文件名:"); String filename = scanner.nextLine(); //System.getProperty("user.dir") 获取项目路径 File file = new File(System.getProperty("user.dir")+"\\src\\"+filename); return file; } //将xml文件转换为Document对象 public Document xmlToDocument(File file) { SAXReader saxReader = new SAXReader(); Document document = null; try { document = saxReader.read(file); } catch (DocumentException e) { // TODO Auto-generated catch block System.out.println("Xml to Document转换失败..."); System.out.println(e.getMessage()); } return document; } //解析文档 public void parseDocument(Document document) { //获取根节点 Element rootElement = document.getRootElement(); System.out.println("根节点 : "+rootElement.getName()); //遍历输出 //第一种方法 System.out.println("第一种遍历输出方法"); for (Iterator iterator = rootElement.elementIterator(); iterator.hasNext();) { Element childElement1 = (Element) iterator.next(); Attribute attribute = childElement1.attribute("id"); System.out.println("id = " + attribute.getText()); for (Iterator iter = childElement1.elementIterator(); iter.hasNext();) { Element childElement2 = (Element) iter.next(); System.out.println(childElement2.getName() + " = " + childElement2.getText()); } } System.out.println("===================="); //第二种方法 System.out.println("第二种遍历输出方法"); ListlistElement1 = rootElement.elements(); for (Element element1 : listElement1) { Attribute attribute = element1.attribute("id"); System.out.println(attribute.getName()+" = "+attribute.getText()); List listElement2 = element1.elements(); for (Element element2 : listElement2) { System.out.println(element2.getName()+" = "+element2.getText()); } } } public static void main(String[] args) { // TODO Auto-generated method stub Dom4jParseXml dom4jParseXml = new Dom4jParseXml(); File file = dom4jParseXml.getXmlFile(); Document document = dom4jParseXml.xmlToDocument(file); dom4jParseXml.parseDocument(document); }}
DOM4J创建xml文档实例
import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class Dom4JCreateXml { public static void main(String[] args) { // TODO Auto-generated method stub //创建document对象,根节点为class Element rootElement = DocumentHelper.createElement("class"); Document document = DocumentHelper.createDocument(rootElement); //添加两个一级子节点 Element childElement11 = rootElement.addElement("student"); Element childElement12 = rootElement.addElement("student"); //为一级子节点添加属性 childElement11.addAttribute("uid", "10086"); childElement12.addAttribute("uid", "10010"); //添加二级子节点 childElement11.addElement("stuName").setText("李彦宏"); childElement11.addElement("stuAge").setText("12"); childElement12.addElement("stuName").setText("马化腾"); childElement12.addElement("stuAge").setText("15"); //输出生成xml文件 OutputFormat format = new OutputFormat(" ", true);// 设置缩进为4个空格,并且另起一行为true try { XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/student.xml"), format); xmlWriter.write(document); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); } catch (IOException e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); } }}