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. Github 开源:高效好用的对象间属性拷贝工具:升讯威 Mapper( Sheng.Mapper)

    Github 地址:https://github.com/iccb1013/Sheng.Mapper 对象属性值映射/拷贝工具.不需要创建映射规则,不要求对象类型一致,适用于简单直接的拷贝操作,可以全 ...

  2. springmvc 之 DispatcherServlet

    DispatcherServlet说明 使用Spring MVC,配置DispatcherServlet是第一步. DispatcherServlet是一个Servlet,所以可以配置多个Dispat ...

  3. flask 扩展之 -- flask-script

    一. 使用 Flask-Script 支持命令行选项 1. 安装 $ pip install flask-script 2. 配置 from flask_script import Manager m ...

  4. 【解决】VS2013 + Qt 5.7(5.6适用)使用QSqlDatabase出现“无法解析的外部符号"错误

    原始日期: 2016-08-03 22:09  错误如下: error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscal ...

  5. redis 对象

    redis通过前面几篇的数据结构构键了一个对象系统,这个对象系统包含了字符串对象,列表对象,哈希对象,集合对象,有序集合对象 每一个对象都是一个redisobject typedef struct r ...

  6. Linux: bash script

    content [toc] bash scripts equivalent bash command to rename a bash variable/command alias fire='fir ...

  7. 1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用

    简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA ...

  8. PHP二维数组合并,根据某个key合并

    /** *PHP二维数组合并,根据某个key合并 * @param type $v 要传入的组合阵列 * @param type $keyname 对应的KEY名称. * @param type $v ...

  9. php7 安装yar 生成docker镜像

    Docker包含三个概念:(1)远程仓库即远程镜像库所有镜像的聚集地(不可进入操作).(2)本地镜像即从远程仓库拉取过来的镜像(3)运行起来的本地镜像叫做容器(分层的可操作)Docker使用:1.首先 ...

  10. spring的Convert机制

    spring.core包内有Converter接口,方法是T convert(S source);从一个类型转为内容一个类型的实际转化器:converters可能非常多,需要一个注册器来集中管理使用, ...