(转)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的增加操作 /* * ...
随机推荐
- Bash环境配置文件
一.环境配置文件读取优先级 其中~/.bash_profile,~/.bash_login,~/.profile三个文件只有一个有效,查找优先级从左至右降低.bash会一直检查是否有~/.bashrc ...
- 用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上
本文为鸡毛巾原创,原文地址:http://www.cnblogs.com/jimaojin/p/7077131.html,转载请注明 CefSharp说白了就是Chromium浏览器的嵌入式核心,我们 ...
- 【源码分享】mui实现简单的手机音乐播放器
mui实现简单的手机音乐播放器 最近先来无事,我用mui写了一个可以跨页面控制的音乐播放器.主要功能有上一曲,下一曲,播放,暂停,感兴趣的可以继续看下去. 说的总是不实在,直接上源码,有兴趣的可以读下 ...
- 持续集成篇-- SonarQube代码质量管理平台的配置与使用
样例视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 一.SonarQube的配置(前提,先用admin用 ...
- linux+tomcat+jdk环境验证码无法显示
我的环境配置:RHEL6.5+tomcat6+jdk1.6 今天遇到一个奇怪的现象,我的tomcat启动起来之后,网站无法显示验证码,导致无法登陆.我的tomcat启动过程是这样的: 我有一个进程守护 ...
- solr学习-基础环境搭建(一)
目前网上关于solr6.+的安装教程很少,有些6.0之前的教程在应用到6.+的版本中出现很多的问题,所以特别整理出来这一片文章,希望能给各位码农一些帮助! 很少写些文章,如有不对的地方,还希望多多指导 ...
- Chapter 7. Design and Performance
本章将对MPEG4及H.264的实现细节进行讲解和比对. Motion Estimation 衡量运动估计的好坏有三种函数(第228页):MSE,MAE和SAE,其中由于SAE运算速度最快所以采用的最 ...
- 青出于蓝而胜于蓝 — Vue.js对Angular.js的那些进步
Angular.js与Vue.js是非常有渊源的两款前端框架,据Vue.js的官方网站描述,在其早期开发时,灵感来源就是Angular.js.而在很多方面,Vue.js也正像是中国的那句古话,&quo ...
- VMware Mac OS中无法找到适应的分辨率的解决办法
使用VMware安装的Mac OS中,有时在显示器的分辨率中的选择项里面,没有对应显示的分辨率可供选择的时候(无法自适应),可以在虚拟机设置里,显示器中修改强制分辨率.修改过后重启虚拟机,就可以有对应 ...
- Linux系统安全配置基线
一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在 配置要求:1.系统需按照实际用户分配账号: 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享. 操作指南:参考配置操 ...