(转)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的增加操作 /* * ...
随机推荐
- APUE-文件和目录(五)函数rename和renameat
rename和renameat #include <stdio.h> int rename(const char *oldname,const char*newname); int ren ...
- Linux常见命令(二)
随着Linux应用的扩展许多同学开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力.Li ...
- 抓包工具 - Fiddler(详细介绍)
Fiddler的详细介绍 一.Fiddler与其他抓包工具的区别 1.Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大.模拟http请求的功能也不够,且firebug常常是需要 ...
- 用require.js封装原生js轮播图
index.html页面: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- [原创]Floodlight+ovs的基本使用
一.配置好openflow交换机 配置好交换机的管理地址,可先用串口登,使管理口地址与controller地址在同一个网络中. 在交换机上配置controller地址: 如: 先用命令新建一个brid ...
- Qlik报表开发见解
因为项目需要,最近去做了Qlik Sense报表开发,学习了Qlik报表的开发方法和一些基础的开发模式,以下是我对Qlik报表开发的一些见解,个人水平有限,欢迎大神指导. 1.Qlik Sense的函 ...
- java 线程的死锁问题
以下的情况可能出现死锁 1.一个对象的同步方法去调用另一个对象的同步方法,同时另一个对象的同步方法也在调用这个对象的同步方法,导致一定几率的死锁,不一定每次都会出现死锁,模拟的代码如下 package ...
- Index Scans 索引扫描
官方文档链接地址 http://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT1170 Index Scans 在索 ...
- 枚举:enum——初写
入门的时候,针对某一字段状态的判断,一开始是在前端用if else 判断,有一些弊端:①把内置的code暴露给用户②if else最好不要超过3层③前端很长一段冗余判断不规范后改进使用枚举,在后台进行 ...
- 利用python将mysql中的数据导入excel
Python对Excel的读写主要有xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种. 如下分别利用xlwt和openpyxl将mysql数据库中查询的数据保存到exce ...