虽然Java中已经有了Dom和Sax这两种标准解析方式

但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心

为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具

鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作

Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了

首先我们需要出创建一个xml文档,然后才能对其解析

xml文档:

<?xml version="1.0" encoding="UTF-8"?> <books>    <book id="001">       <title>Harry Potter</title>       <author>J K. Rowling</author>    </book>    <book id="002">       <title>Learning XML</title>       <author>Erik T. Ray</author>    </book> </books>

示例一:用List列表的方式来解析xml

import java.io.File;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class Demo { public static void main(String[] args) throws Exception {  SAXReader reader = new SAXReader();  File file = new File("books.xml");  Document document = reader.read(file);  Element root = document.getRootElement();  List<Element> childElements = root.elements();  for (Element child : childElements) {   //未知属性名情况下   /*List<Attribute> attributeList = child.attributes();   for (Attribute attr : attributeList) {    System.out.println(attr.getName() + ": " + attr.getValue());   }*/   //已知属性名情况下   System.out.println("id: " + child.attributeValue("id"));   //未知子元素名情况下   /*List<Element> elementList = child.elements();   for (Element ele : elementList) {    System.out.println(ele.getName() + ": " + ele.getText());   }   System.out.println();*/   //已知子元素名的情况下   System.out.println("title" + child.elementText("title"));   System.out.println("author" + child.elementText("author"));   //这行是为了格式化美观而存在   System.out.println();  } }}

示例二:使用Iterator迭代器的方式来解析xml

import java.io.File;import java.util.Iterator;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class Demo { public static void main(String[] args) throws Exception {  SAXReader reader = new SAXReader();  Document document = reader.read(new File("books.xml"));  Element root = document.getRootElement();  Iterator it = root.elementIterator();  while (it.hasNext()) {   Element element = (Element) it.next();   //未知属性名称情况下   /*Iterator attrIt = element.attributeIterator();   while (attrIt.hasNext()) {    Attribute a  = (Attribute) attrIt.next();    System.out.println(a.getValue());   }*/   //已知属性名称情况下   System.out.println("id: " + element.attributeValue("id"));   //未知元素名情况下   /*Iterator eleIt = element.elementIterator();   while (eleIt.hasNext()) {    Element e = (Element) eleIt.next();    System.out.println(e.getName() + ": " + e.getText());   }   System.out.println();*/   //已知元素名情况下   System.out.println("title: " + element.elementText("title"));   System.out.println("author: " + element.elementText("author"));   System.out.println();  } }}

运行结果:

2016110316252934.png

示例三:创建xml文档并输出到文件

import java.io.File;import java.io.FileOutputStream;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class Demo { public static void main(String[] args) throws Exception {  Document doc = DocumentHelper.createDocument();  //增加根节点  Element books = doc.addElement("books");  //增加子元素  Element book1 = books.addElement("book");  Element title1 = book1.addElement("title");  Element author1 = book1.addElement("author");  Element book2 = books.addElement("book");  Element title2 = book2.addElement("title");  Element author2 = book2.addElement("author");  //为子节点添加属性  book1.addAttribute("id", "001");  //为元素添加内容  title1.setText("Harry Potter");  author1.setText("J K. Rowling");  book2.addAttribute("id", "002");  title2.setText("Learning XML");  author2.setText("Erik T. Ray");  //实例化输出格式对象  OutputFormat format = OutputFormat.createPrettyPrint();  //设置输出编码  format.setEncoding("UTF-8");  //创建需要写入的File对象  File file = new File("D:" + File.separator + "books.xml");  //生成XMLWriter对象,构造函数中的参数为需要输出的文件流和格式  XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);  //开始写入,write方法中包含上面创建的Document对象  writer.write(doc); }}

运行结果:

在java中使用dom4j解析xml(示例代码)

更多在java中使用dom4j解析xml(示例代码)相关文章请关注PHP中文网!

更多相关文章

  1. java使用xpath解析xml示例分享
  2. php操作xml入门之xml基本介绍及xml标签元素
  3. java使用jaxb操作xml示例
  4. XML指南——XML元素
  5. XML 增、删、改和查示例
  6. 详细介绍Xml数据解析的三种方式的示例代码
  7. 一个简单的XML Schema的示例代码详解
  8. xml解析工具包 Xstream的示例代码详解
  9. 详细介绍Web安全之XML注入的示例代码

随机推荐

  1. 报表的各种坑...
  2. 常用 Git 指令整理
  3. Spring 的核心特性
  4. CCNP(ISCW)实验:用SDM配置GRE OVER IPSEC
  5. Spring-IoC
  6. 自建 GitLab,却玩到了 VMware
  7. Spring bean 依赖查找
  8. 这波 JVM 面试题解答,绝对给你面试加分
  9. JVM 常用配置参数(Java 8)
  10. Spring IoC 依赖注入(支持哪些数据类型?)