文档章节

dom4j详情

s
 sxl01890
发布于 2016/04/18 08:59
字数 678
阅读 23
收藏 1


src/student.xml

<?xml version="1.0" encoding="UTF-8" ?>

<students>

<student number="itcast_0001">

<name>tom</name>

<age>18</age>

<sex>male</sex>

</student>

<student number="itcast_0002">

<name>jerry</name>

<age>16</age>

<sex>female</sex>

</student>

</students>


import java.io.File;


import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.io.SAXReader;


public class Demo1 {


/**

*  将xml文档 加载,获得document对象, 

*  将document对象 以字符串的形式输出

* @throws DocumentException 

*/

public static void main(String[] args) throws DocumentException {

//1 创建解析器 

SAXReader reader = new SAXReader();

    //2 使用解析器,加载文档

Document document = reader.read(new File("src/student.xml"));

    //3 将文档对象转化成string

String xml = document.asXML();

      System.out.println(xml);

}


}


import java.io.File;

import java.util.Iterator;


import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;


public class Demo2 {


/**

* 查 ==> 文档中所有学生信息

* @throws DocumentException 

*/

public static void main(String[] args) throws DocumentException {

//1 创建解析器 

SAXReader reader = new SAXReader();

    //2 使用解析器,加载文档

Document document = reader.read(new File("src/student.xml"));

//3 获得根元素

Element students = document.getRootElement();

//4 迭代根元素下的所有student元素

Iterator<Element> it =  students.elementIterator("student");

while(it.hasNext()){

Element student = it.next();

//5 获得student元素上的number属性

String number =  student.attributeValue("number");

System.out.println(number);

//6 再找 student元素下的name age sex 子元素

//7 获得子元素的内容

Element nameELe = student.element("name");

String name = nameELe.getText();

String age = student.elementText("age");

String sex = student.elementText("sex");

System.out.println(name+"==>"+age+"==>"+sex);

}

}


}



import java.io.File;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.OutputStreamWriter;


import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;


public class Demo3_2 {


/**

* 增: 增加一个学生   itcast_0003 杰克 20 male

* @throws DocumentException 

* @throws IOException 

*/

public static void main(String[] args) throws DocumentException, IOException {

//1 创建解析器 

SAXReader reader = new SAXReader();

    //2 使用解析器,加载文档

Document document = reader.read(new File("src/student.xml"));

//3 获得根元素

Element root  = document.getRootElement();

//4 为根元素添加student子元素,和属性.

Element studentEle = root.addElement("student").addAttribute("number", "itcast_0003");

//5 为student添加 name age sex 子元素和内容

studentEle.addElement("name").addText("杰克");

studentEle.addElement("age").addText("20");

studentEle.addElement("sex").addText("male");

//6 回写

//1>创建格式化器

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding("UTF-8"); //解码  encoding="UTF-8"

//2>创建写入器

//XMLWriter writer = new XMLWriter(new FileWriter("src/student_copy.xml"),format);

//XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/student_copy.xml"),"GBK"),format);

XMLWriter writer = new XMLWriter(new FileOutputStream("src/student_copy.xml") ,format);

//3>将文档写入文件

writer.write(document);

//4>关闭资源

writer.close();

//简单的不乱码的方法: 使用字节流写入, 不要使用字符流. 使用字节流永远不会乱码.

}


}




import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.UnsupportedEncodingException;


import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;


public class Demo4_2 {


/**

*  删除: 删除学号为itcast_0001 的学生

* @throws DocumentException 

* @throws IOException 

*/

public static void main(String[] args) throws DocumentException, IOException {

//1 创建解析器 

SAXReader reader = new SAXReader();

    //2 使用解析器,加载文档

Document document = reader.read(new File("src/student.xml"));

//3 定义xpath表达式

String xpath ="//student[@number='itcast_0001']";

//4 根据xpath找出要删除的元素

Element stuEle = (Element) document.selectSingleNode(xpath);

//5 删除

stuEle.getParent().remove(stuEle);

//6回写

//1>新建格式化器

OutputFormat format = OutputFormat.createPrettyPrint();

//2>新建写入器

XMLWriter writer = new XMLWriter(new FileOutputStream("src/student_copy.xml"),format);

//3>写入

writer.write(document);

//4>关闭资源

writer.close();

}


}


© 著作权归作者所有

共有 人打赏支持
s
粉丝 3
博文 117
码字总数 55191
作品 0
浦东
Hibernate 4.16.Final 发布

Hibernate ORM 4.1.6.Final 刚刚发布,这是一个小的 bug 修复版本,修复了 16 个问题,详情请看 changelog 。 下面是需要注意的几个问题: HHH-6130 - Criteria 查询中没有正确处理联合 map ...

红薯
2012/08/09
1K
8
DOM4J解析XML

Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。很多Java软件读写XML都在使用dom4j,Sun公司的JAXM也是用dom4j。Hib...

iborder
2016/10/18
42
0
Android 创建与解析XML(五)—— Dom4j方式

1、Dom4j概述 dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support fo......

长平狐
2013/01/06
91
0
Mr. Sanders/ApkCustomizationTool

ApkCustomizationTool apk定制工具,用于渠道打包等自定义apk。此工具使用JavaFX开发需要JDK1.8的支持。 此工具适合渠道及相关人员!(不懂编程概念的相关人员) 注意:请在环境变量里面配置好签...

Mr. Sanders
2015/10/21
0
0
java解析xml -- DOM4J JDOM DOM SAX 之比较

DOM4J http://dom4j.sourceforge.net 虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以...

o0江湖郎中0o
2014/01/07
0
2

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
7
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
18
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部