(补)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是以层次结构组织的节点或信息片断的集合.这 ...
随机推荐
- P3768 【简单的数学题】
P3768 [简单的数学题] \(Ans=\sum ^{n}_{i=1}\sum ^{n}_{j=1}ijgcd(i,j)\) \(=\sum ^{n}_{i=1}\sum ^{n}_{j=1}ij\ ...
- java项目常用架构
三层架构 : 界面层/表现层 UI 业务逻辑层 BLL 针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理. 数据访问层 DAL 访问数据库 mvc : 而 MVC 是在三层架构的基 ...
- shell文件相关指令
文件解压缩tar 请参考文档:http://blog.csdn.net/eroswang/article/details/5555415/ tar -zcvf ${standardpath}${fil ...
- 使用MapReduce将mysql数据导入HDFS
package com.zhen.mysqlToHDFS; import java.io.DataInput; import java.io.DataOutput; import java.io.IO ...
- 每个程序员都应该了解的 CPU 高速缓存
每个程序员都应该了解的 CPU 高速缓存 英文原文:Memory part 2: CPU caches 来源:oschina [编者按:这是Ulrich Drepper写“程序员都该知道存储器”的第二 ...
- matlab画圆
MATLAB rectangle函数1 语法说明rectangle('Position', pos)rectangle('Position', pos, 'Curvature', cur)rectan ...
- 【python】关于函数递归使用 return 后,收到数据为 None。
在写一个辗转相除求最小公因数的程序的时候,突然发现自己不管怎么写(除了两数恰巧可以整除),return 返回的值恒为 none. 代码为此: def gcd(a,b): if a%b==0: retu ...
- 05 - Django应用第二步
知识点 1) 数据库的配置 涉及到INSTALL_APPS的配置等 初次创建数据的命令 2) 模型的编写 模型的创建方式, 写一个类继承自models.Model 模型的数据类型 外键 自动创建ID列 ...
- FFMPEG实现H264的解码(从源代码角度)
农历2014年底了,将前段时间工作中研究的FFMPEG解码H264流程在此做一下整理,也算作年终技术总结了! H264解码原理: H264的原理参考另一篇博文 http://blog.csdn.net ...
- BZOJ1367:[Baltic2004]sequence
浅谈左偏树:https://www.cnblogs.com/AKMer/p/10246635.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php? ...