Java XML解析工具 dom4j介绍及使用实例
来源:互联网 发布:12一13nba总决赛数据 编辑:程序博客网 时间:2024/04/28 01:34
Java XML解析工具 dom4j介绍及使用实例
dom4j介绍
dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。
dom4j的使用
下载了dom4j项目之后,解压缩,将其jar包(我的当前版本叫做dom4j-1.6.1.jar)加入class path下面。
(Properties->Java Build Path -> Add External JARs...)。
之后就可以使用其提供的API进行编程。
程序实例1
第一个程序,用Java代码生成xml文档,代码如下:
package com.example.xml.dom4j;import java.io.FileOutputStream;import java.io.FileWriter;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;/** * dom4j框架学习 使用dom4j框架创建xml文档并输出保存 * */public class Dom4JTest1{ public static void main(String[] args) throws Exception { // 第一种方式:创建文档,并创建根元素 // 创建文档:使用了一个Helper类 Document document = DocumentHelper.createDocument(); // 创建根节点并添加进文档 Element root = DocumentHelper.createElement("student"); document.setRootElement(root); // 第二种方式:创建文档并设置文档的根元素节点 Element root2 = DocumentHelper.createElement("student"); Document document2 = DocumentHelper.createDocument(root2); // 添加属性 root2.addAttribute("name", "zhangsan"); // 添加子节点:add之后就返回这个元素 Element helloElement = root2.addElement("hello"); Element worldElement = root2.addElement("world"); helloElement.setText("hello Text"); worldElement.setText("world text"); // 输出 // 输出到控制台 XMLWriter xmlWriter = new XMLWriter(); xmlWriter.write(document); // 输出到文件 // 格式 OutputFormat format = new OutputFormat(" ", true);// 设置缩进为4个空格,并且另起一行为true XMLWriter xmlWriter2 = new XMLWriter( new FileOutputStream("student.xml"), format); xmlWriter2.write(document2); // 另一种输出方式,记得要调用flush()方法,否则输出的文件中显示空白 XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student2.xml"), format); xmlWriter3.write(document2); xmlWriter3.flush(); // close()方法也可以 }}
程序Console输出:
<?xml version="1.0" encoding="UTF-8"?><student/>
生成的一个xml文档:
<?xml version="1.0" encoding="UTF-8"?><student name="zhangsan"> <hello>hello Text</hello> <world>world text</world></student>
程序实例2
程序实例2,读入xml文档并分析,将其内容输出。
首先,待分析的文档如下:
<?xml version="1.0" encoding="UTF-8"?><students name="zhangsan"> <hello name="lisi">hello Text1</hello> <hello name="lisi2">hello Text2</hello> <hello name="lisi3">hello Text3</hello> <world name="wangwu">world text1</world> <world name="wangwu2">world text2</world> <world >world text3</world></students>
Java代码:
package com.example.xml.dom4j;import java.io.File;import java.util.Iterator;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.DOMReader;import org.dom4j.io.SAXReader;/** * dom4j框架学习: 读取并解析xml * * */public class Dom4JTest2{ public static void main(String[] args) throws Exception { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File("students.xml")); // 获取根元素 Element root = document.getRootElement(); System.out.println("Root: " + root.getName()); // 获取所有子元素 List<Element> childList = root.elements(); System.out.println("total child count: " + childList.size()); // 获取特定名称的子元素 List<Element> childList2 = root.elements("hello"); System.out.println("hello child: " + childList2.size()); // 获取名字为指定名称的第一个子元素 Element firstWorldElement = root.element("world"); // 输出其属性 System.out.println("first World Attr: " + firstWorldElement.attribute(0).getName() + "=" + firstWorldElement.attributeValue("name")); System.out.println("迭代输出-----------------------"); // 迭代输出 for (Iterator iter = root.elementIterator(); iter.hasNext();) { Element e = (Element) iter.next(); System.out.println(e.attributeValue("name")); } System.out.println("用DOMReader-----------------------"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); // 注意要用完整类名 org.w3c.dom.Document document2 = db.parse(new File("students.xml ")); DOMReader domReader = new DOMReader(); // 将JAXP的Document转换为dom4j的Document Document document3 = domReader.read(document2); Element rootElement = document3.getRootElement(); System.out.println("Root: " + rootElement.getName()); }}
代码运行后输出:
Root: studentstotal child count: 6hello child: 3first World Attr: name=wangwu迭代输出-----------------------lisilisi2lisi3wangwuwangwu2null用DOMReader-----------------------Root: students
0 0
- Java XML解析工具 dom4j介绍及使用实例
- Java XML解析工具 dom4j介绍及使用实例
- Java XML解析工具 dom4j介绍及使用实例
- Java XML解析工具 dom4j介绍及使用实例
- Java XML解析工具 dom4j介绍及使用实例
- Java XML解析工具 dom4j介绍及使用实例
- Java XML解析工具 dom4j介绍及使用实例
- Java XML解析工具 dom4j介绍及使用实例
- java dom4j解析xml实例
- Java XMl解析DOM4j实例
- Java -- XML解析工具dom4j
- xml简单介绍及使用dom4j进行解析
- java 使用 dom4j 解析 XML
- java 使用dom4j解析xml
- JAVA 使用Dom4j 解析XML
- java使用dom4j解析xml
- JAVA 使用Dom4j 解析XML
- JAVA 使用Dom4j 解析XML
- 2013年外企在中国集体败退(转载)
- Android中利用GridView实现水平和垂直均有滚动条的表格效果
- 刺猬
- 第19章 ARP和RARP
- 一段生成随机数的JS代码
- Java XML解析工具 dom4j介绍及使用实例
- svn trunk branch tag 概念介绍
- 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. .
- 安装使用openvswitch(一)
- 归纳一下:C#线程同步的几种方法
- Object类中toString方法
- ios开发小知识
- quartz 几个表达式
- 【Angular】(必须)通过指令(Directive)操纵Dom