xml文档:

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

<书架>
<书 出版社="清华">
<书名>Java就业培训教程</书名>
<出版社>华</出版社>
<出版社>清华</出版社>
<售价>50.00元</售价>
<内部价>40.99元</内部价>
<作者>刘清华</作者>
</书>
<书>
<书名>JavaScript网</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>  

代码演示:

package test.java;
/**
* @author lxw
* @date 2016年9月6日 下午10:01:55
* @describe
*/
import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Dom4JParser {
//测试
public static void main(String[] args) throws Exception {
test08();
}
//1、获得某个节点的具体内容 >> 获取第2本书的 【书名】
public static void test01() throws Exception{
//1.获取解析器
SAXReader reader = new SAXReader();
//2.加载XML文档
Document document = reader.read("src/book.xml");
//3.获取根元素
Element root = document.getRootElement();
//4.找第二本书的元素
Element book = (Element)root.elements("书").get(1);
Element name = book.element("书名");
// 测试+打印
System.out.println("第2本书的书名是:"+name.getText());
}
//2、遍历所有的元素节点,打印元素的名称
public static void test02() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
treeWalk(root); }
//2.1 递归遍历
public static void treeWalk(Element element){
//打印元素的名字
System.out.println(element.getName());
//获取该元素,孩子Node的个数
int size = element.nodeCount();
//循环遍历
for (int i = 0; i < size; i++) {
//取出第i个 孩子节点
Node node = element.node(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
treeWalk((Element)node);
}
}
}
//3.修改xml的主体内容 》》修改第一本书的【作者】
public static void test03() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//1.找到作者
Element element = (Element)root.elements("书").get(0);
//2.修改 主题内容
element.element("作者").setText("刘清华");
//3.更新XML文档
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");//设置格式化编码
//默认编码就是 【UTF-8】
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
//4.增加一个节点 》》第1本书 增加 【内部价】
public static void test04() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//1.找到第一本书
Element book1 = root.element("书"); //默认 是 第1本 ,相当于 elements(“书”).get(0);
//2.新建一个 节点
Element price = DocumentHelper.createElement("作者");
price.setText("sts");
//3.添加
book1.add(price);
//4.更新XML文档
//格式化器,使XML更规范
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
//5.在指定位置添加一个元素节点 》》 第一本书,作者前,增加 【出版社】
public static void test05() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//1.找到第一本书的集合列表
List book1 = root.element("书").elements(); //默认 是 第1本 ,相当于 elements(“书”).get(0);
//2.新建一个 节点
Element chuban = DocumentHelper.createElement("出版社");
chuban.setText("华");
//3.在list中指定位置,添加
book1.add(1,chuban);
//4.更新XML文档
//格式化器,使XML更规范
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
//6.删除指定元素节点
private static void test06()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//1.找到第一本书的作者
Element book1 = root.element("书");
Element author = book1.element("作者");
//2.由父亲删儿子
book1.remove(author);
//3.更新XML文档
//格式化器,使XML更规范
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
//7.对元素属性的操作
private static void test07()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//1.找到第一本书
Element book1 = root.element("书");
//2.显示属性的内容
System.out.println(book1.attributeValue("出版社"));
}
//8.将xml转换成String
private static void test08() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
//XML转换成字符串
String text = document.asXML();
System.out.println(text);
}
//9.将String 转换成为 xml
private static void test09() throws Exception{
String text = "<person><name>刘清华</name></person>";
Document document = DocumentHelper.parseText(text); //格式化器,使XML更规范
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream("D:/test.xml"),format);
writer.write(document);
writer.close();
}
}

(转)Dom4J解析的更多相关文章

  1. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  2. xml之dom4j解析

    * 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...

  3. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  4. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  5. Dom4j解析xml

    public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...

  6. 使用dom4j解析XML

    jar包:dom4j //使用dom4j解析返回的xml SAXReader reader = new SAXReader(); Document doc = reader.read(new Byte ...

  7. 使用dom4j解析XML文档

    dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...

  8. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  9. 用DOM4J解析XML文件案例

    用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:

  10. DOM综合案例、SAX解析、StAX解析、DOM4J解析

    今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...

随机推荐

  1. python编码问题大终结

    一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...

  2. iptables实用教程(二):管理链和策略

    概念和原理请参考上一篇文章"iptables实用教程(一)". 本文讲解如果管理iptables中的链和策略. 下面的代码格式中,下划线表示是一个占位符,需要根据实际情况输入参数, ...

  3. CSS3学习系列之选择器(四)

    使用选择器来插入文字 css2中,使用before选择器在元素前面插入内容,使用after选择器在元素后面插入内容,在选择器的content属性中定义要插入的内容.将content属性值设定为none ...

  4. Navicat连接Oracle报错_Cannot load OCI DLL 87

    原因: Oracle需要装client才能让第三方工具通过OCI(Oracle Call Interface)来连接. 解决方案: 1. 去oracle官网下载Instant Client 11, 或 ...

  5. android设置横竖屏

    android:screenOrientation="portrait"

  6. ubuntu16.04-x64系统中Jexus web server部署.NetCore和端口分析引发的猜想!

    您有这样的牢骚么? 有一周没更新博客了,简单说下在干什么吧:主要是公司安排对接某旅游大公司的接口,接口数量倒也就10个左右,对接完后还需要加入到业务系统中和App端,因此还是需要花点时间的:时间上来说 ...

  7. thinkphp5.0学习笔记(四)数据库的操作

    ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理.采用PDO ...

  8. redis可视化客户端工具

    TreeNMS是一款redis,Memcache可视化客户端工具,采用JAVA开发,实现基于WEB方式对Redis, Memcached数据库进行管理.维护. 功能包括:NoSQL数据库的展示,库表的 ...

  9. 保存Druid的监控记录

    继上篇帖子之后 , 公司又要求将Druid Monitor的监控信息保存起来 , 因为Druid的监控记录在是缓存的,重启之后无法找回,所以需要做持久化,定期把监控记录转存到日志文件中 研究了半天 , ...

  10. 解决Socket粘包问题——C#代码

    解决Socket粘包问题——C#代码 前天晚上,曾经的一个同事问我socket发送消息如果太频繁接收方就会有消息重叠,因为当时在外面,没有多加思考 第一反应还以为是多线程导致的数据不同步导致的,让他加 ...