(转)Dom4J解析
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解析的更多相关文章
- XML技术之DOM4J解析器
由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...
- xml之dom4j解析
* 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- Dom4j解析xml
public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...
- 使用dom4j解析XML
jar包:dom4j //使用dom4j解析返回的xml SAXReader reader = new SAXReader(); Document doc = reader.read(new Byte ...
- 使用dom4j解析XML文档
dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 用DOM4J解析XML文件案例
用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:
- DOM综合案例、SAX解析、StAX解析、DOM4J解析
今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...
随机推荐
- SQL Server Alwayson读写分离配置
标签:MSSQL/只读路由 概述 Alwayson相对于数据库镜像最大的优势就是可读副本,带来可读副本的同时还添加了一个新的功能就是配置只读路由实现读写分离:当然这里的读写分离稍微夸张了一点,只能称之 ...
- React+Redux开发实战项目【美团App】,没你想的那么难
README.md 前言 开始学习React的时候,在网上找了一些文章,读了官网的一些文档,后来觉得React上手还是蛮简单的, 然后就在网上找了一个React实战的练手项目,个人学完之后觉得这个项目 ...
- mac os 安装 wget
1. brew安装: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/inst ...
- ionic 项目中使用ngCordova插件$cordovaCamera筛选手机图库图片显示出来并上传
原文档请看http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/ionic%E5%9B%BE%E7%89%87%E4%B8%8A%E4%B ...
- 2017-06-22初识python
初识python #!/usr/bin/env python (python解释器的文件路径)# -*- coding:utf-8 -*- (使用的编码内型)# python 2.7 <需要加第 ...
- 持续集成篇-- SonarQube代码质量管理平台的安装
视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221 环境:CentOS 6 ...
- Python Click 学习笔记(转)
原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...
- android权限(permission)大全
权限添加位置: 权限代码: 1.android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词 2.android.permission.WRITE_ ...
- 浙江省新高中信息技术教材,将围绕Python进行并增加编程相关知识点
2017年初消息: 浙江省信息技术新教材,即将在2017级(2017年9月入学)高中新生中开始使用. 据了解,与目前的选考(可以理解为高考科目)要求的信息技术教材由3本<信息技术基础>.& ...
- [图形学] Chp9 三维几何变换--栈处理函数与矩阵管理函数的区别
矩阵管理函数:glLoadIdentity()是把当前活动矩阵设置为单位矩阵. 栈处理函数:glPushMatrix()是将当前活动的变换矩阵复制一份,压入栈顶:glPopMatrix()是破坏当前活 ...