转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML
Java DOM4J Parser - Parse XML Document
Dom4j下载及使用Dom4j读写XML简介
虽然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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
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(); } } } |
运行结果:
示例三:创建xml文档并输出到文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
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文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- java中利用dom4j解析XML文件
官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回Li ...
- 在java中使用dom4j解析xml
创建xml文档并输出到文件 import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; impor ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- java代码用dom4j解析xml文件的简单操作
时间: 2016/02/17 目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中. 从网上搜了下,有四种常用的解析xml的 ...
- Java中使用dom4j处理xml类型的文本
在Java的实际开发中经常会碰到xml文件的解析,需要获取固定节点的内容,在这里简单记录一下,方便下次使用时查阅: 1.VSCode中安装插件XML Format,Shift + Alt + F撸直x ...
- java中多种方式解析xml
第一种:DOM.DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正 ...
- JAVA中使用Dom解析XML
在G盘下新建XML文档:person.xml,XML代码: <?xml version="1.0" encoding="utf-8"?> <s ...
- Java中实现SAX解析xml文件到MySQL数据库
大致步骤: 1.Java bean 2.DBHelper.java 3.重写DefaultHandler中的方法:MyHander.java 4.循环写数据库:SAXParserDemo.java ① ...
随机推荐
- java_Excel 导出
package Demo; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; i ...
- c# 用户名 密码 访问 局域网共享
#region Ping 返回true则代表可以连接成功 public bool Ping(string remoteHost) { bool Flag = false; Process proc = ...
- activity 所需jiar包
activity下载后有很多jar包有的jar包不一定用得上,也有些jar是重复的,这里就整理了一下必要的jar包 路径.. \activiti-5.19.0.2\wars\activiti-expl ...
- Ubuntu+Apache2+Mono+MVC3
1.安装ssh(上传文件用,也可以用FTP) sudo apt-get install openssh-server 2.安装Apache2 apahe2:sudo apt-get install a ...
- 如何设置ASP.NET页面的运行超时时间 (转载)
全局超时时间 服务器上如果有多个网站,希望统一设置一下超时时间,则需要设置 Machine.config 文件中的 ExecutionTimeout 属性值. Machine.config 文件位于 ...
- CSS3 3D轮播主要可以分成这样的三类
中秋节假期这么快就没了,这几天还一直下雨,索性在家看看书.这次看的是Tom Lane的<A Tour of PostgreSQL Internals>.这篇小随笔就算做学习笔记了.园子里面 ...
- Linq对XML的简单操作
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
- Android 开发命令行完全攻略
作为命令行的爱好者,我想写这个主题已经有好一段时间了.除了显得很酷之外,命令行的使用能够提高我们的开发效率,因为相比通过鼠标点击一系列的菜单选项,使用键盘输入几个字符并点击 TAB 健显然会快很多. ...
- make phpexcel working with XAMPP7.0.9
Environment XAMPP 7.0.9 (PHP 7.0.9) PHPExcel 1.7.6-1.8.1 not lib_zip.dll Windows 10.1 thinkPHP 5.0.1 ...
- linux文件基本属性
在Linux中第一个字符代表这个文件是目录.文件或链接文件等等. 当为[ d ]则是目录 当为[ - ]则是文件: 若是[ l ]则表示为链接文档(link file): 若是[ b ]则表示为装置文 ...