JAVA语言 XML解析工具:dom4j的介绍及使用实例
小标 2018-11-05 来源 : 阅读 922 评论 0

摘要:本文主要向大家介绍了JAVA语言 XML解析工具:dom4j的介绍及使用实例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言 XML解析工具:dom4j的介绍及使用实例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

Java XML解析工具:dom4j的介绍及使用实例


dom4j介绍


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></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());

 

 }

 

}</element></element>

   


代码运行后输出:


<div class="l        

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程