(补)Java解析XML之dom4j
上次记得忘了记最流行的dom4j方法了,用的还是上次的那个XML文件
注:需要添加dom4j.jar文件
package com.xujingyang.dom4j; import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.junit.Test; import com.xujingyang.utils.dom4jUtil; public class dom4jTest { /**
* 获取指定节点的内容
*/
@Test
public void testDom4j() {
try {
Document document = dom4jUtil.getDocument("src/books.xml");
// 获取根节点
Element rootElement = document.getRootElement();
// 获取根节点的子节点集合的第一个节点
Element element = (Element) rootElement.elements().get(0);
// 获取对应子节点的文本
String text = element.element("price").getText();
System.out.println(text);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //==================递归遍历所有子节点的文本开始======================================
@Test
public void test2() {
try {
Element rootElement = dom4jUtil.getDocument("src/books.xml")
.getRootElement();
treeWalk(rootElement);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void treeWalk(Element element) {
//获取子节点个数
int nodeCount = element.nodeCount(); //遍历子节点
for (int i = 0; i < nodeCount; i++) {
//获取第i个子节点
Node node = element.node(i);
if (node instanceof Element) {
//如果仍然是节点就递归
treeWalk((Element) node);
} else {
//不是就打印节点内容
String text = node.getStringValue();
System.out.println(text);
}
}
} //===================递归遍历所有子节点的文本结束================================================ /**
* 添加新子节点
*/
@Test
public void test3(){
try {
Document document = dom4jUtil.getDocument("src/books.xml");
// 获取根节点
Element rootElement = document.getRootElement();
Element element = (Element) rootElement.elements("book").get(0);
//添加子节点信息
element.addElement("特价").setText("21");
//写入源文件
dom4jUtil.writeDocument(document); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 添加同级新节点
*/
@Test
public void test4(){
try {
Document document = dom4jUtil.getDocument("src/books.xml");
// 获取根节点
Element rootElement = document.getRootElement();
Element element = (Element) rootElement.elements("book").get(0); Element createElement = DocumentHelper.createElement("新价");
createElement.setText("31");
//向子节点的指定位置添加新节点
element.elements().add(2, createElement);
//写入源文件
dom4jUtil.writeDocument(document); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 删除指定的节点
*/
@Test
public void test5(){
try {
Document document = dom4jUtil.getDocument("src/books.xml");
// 获取根节点
Element rootElement = document.getRootElement();
//找到子节点
Element element = (Element) rootElement.elements("book").get(0);
//找到要删除的节点
Element tejia = element.element("特价");
//删除
element.remove(tejia);
//写入文件
dom4jUtil.writeDocument(document);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
程序用到的工具类:
package com.xujingyang.utils; import java.io.FileOutputStream; import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class dom4jUtil { /**
* 得到Document对象
*
* @param path
* @return
* @throws Exception
*/
public static Document getDocument(String path) throws Exception {
SAXReader reader = new SAXReader();
return reader.read(path);
} /**
* 写入XML
* @param document
* @throws Exception
*/
public static void writeDocument(Document document) throws Exception {
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(
"src/books.xml"), format);
xmlWriter.write(document);
}
}
(补)Java解析XML之dom4j的更多相关文章
- Java解析XML之Dom4j
Java解析XML文件的方法有多种,个人感觉最常用的是使用Dom4j来解析XML文件.下面就简单介绍下Dom4j的基础使用. Dom4j需要jar包的支持,大家可以从网络上下载,如dom4j-1.6. ...
- java 解析xml(dom4j.jar)
先导入jar包 <?xml version="1.0" encoding="UTF-8"?> <companys> <compan ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
[目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...
- JAVA解析XML文件(DOM,SAX,JDOM,DOM4j附代码实现)
1.解析XML主要有四种方式 1.DOM方式解析XML(与平台无关,JAVA提供,一次性加载XML文件内容,形成树结构,不适用于大文件) 2.SAX方式解析XML(基于事件驱动,逐条解析,适用于只处理 ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- java解析XML saxReader.read(xml) 错误:org.dom4j.DocumentException: no protocol
java解析XML saxReader.read(xml) 错误:org.dom4j.DocumentException: no protocol 完整错误信息: org.dom4j.Document ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
- Java 解析 XML
Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...
- JAVA解析XML的四种方式
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...
随机推荐
- LeetCode:汇总区间【228】
LeetCode:汇总区间[228] 题目描述 给定一个无重复元素的有序整数数组,返回数组区间范围的汇总. 示例 1: 输入: [0,1,2,4,5,7] 输出: ["0->2&quo ...
- html5 css3 进度条特效
https://www.html5tricks.com/tag/css3%E8%BF%9B%E5%BA%A6%E6%9D%A1/page/3
- Redis缓存全自动安装shell脚本
我只是把命令放到shell文件中了,方便安装,代码如下: #!/bin/bash # shell的执行选项: # -n 只读取shell脚本,但不实际执行 # -x 进入跟踪方式,显示所执行的每一条命 ...
- php 图片下载
php图片保存.下载 <?php //获取图片2进制内容 ,可以保存入数据库 $imgStr = file_get_contents('http://.../1.jpg'); //保存图片 $f ...
- 2018svn1
Svn(Subversion) VisualSVN-Server是SVN的服务端.TortoiseSVN是客户端.D:\SVNRepositories是安装VisualSVN-Server时候选择的仓 ...
- table-cell笔记
display:table-cell可将元素设为类似于table的td一样的布局,在垂直居中.两行自适应布局.等高布局下有很高的利用价值 详见: http://www.zhangxinxu.com/w ...
- hd acm1005
问题: 已知递推公式:f[i] = ( a * f[i-1] + b * f[i-2] ) % 7,f[1]=1,f[2]=1. 需要你输入三个数a,b,n.其中a,b用来补充上述公式,用补充后的公式 ...
- 20165101 预备作业3 Linux安装及学习
#Linux安装及命令入门 安装虚拟机 学习了娄老师的博客<基于VirtualBox虚拟机安装Ubuntu图文教程>,我下载了最新版的VirtualBox和16.04版的Ubuntu.根据 ...
- systemd基本使用
参考金步国翻译的systemd中文手册: http://www.jinbuguo.com/systemd/index.html 金步国翻译质量都很高, 非常适合做参考 原文:https://wiki. ...
- 算法(Algorithms)第4版 练习 1.3.7
package com.qiusongde; import java.util.Iterator; import java.util.NoSuchElementException; import ed ...