(补)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是以层次结构组织的节点或信息片断的集合.这 ...
随机推荐
- hd acm1061
Problem Description Given a positive integer N, you should output the most right digit of N^N. Inp ...
- 算法(Algorithms)第4版 练习 2.3.17
关键代码: public static void sort(Comparable[] a) { StdRandom.shuffle(a);//eliminate dependence on input ...
- bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 优先队列+dij
1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1768 Solv ...
- python第四篇:linux命令行总结 + 自动备份Python程序
由于最近需要学习Python爬虫相关的知识,所以就先从Python基础.Linux基础开始进行了学习,下面主要是总结了常见的Linux的命令行.最后为了巩固学到的东西,尝试写了个自动备份的Python ...
- jQuery创建DOM的方法
jQuery1.4带来了一个全新的便捷地清晰的DOM对象创建方法,在 jQuery 1.4中,我们可以传递一个对象作为第二个参数. 这个参数接受一个属性的集合,这些可以传递给.attr() 方法.此外 ...
- Python3 数据可视化之matplotlib、Pygal、requests
matplotlib的学习和使用 matplotlib的安装 pip3 install matplotlib 简单的折线图 import matplotlib.pyplot as plt #绘制简单的 ...
- 大数据日志分析产品——SaaS Cloud, e.g. Papertrail, Loggly, Sumo Logic;Open Source Frameworks, e.g. ELK stack, Graylog;Enterprise Products, e.g. TIBCO LogLogic, IBM QRadar, Splunk
Learn how you can maximize big data in the cloud with Apache Hadoop. Download this eBook now. Brough ...
- queryRuner如何获得bean对象,当这个bean对象中包含其他对象的时候
我们知道我们可以使用dbutil的QueryRunner下的query方法使用BeanHandler得到bean对象 但是,当我们在一个表和另一个表关联的时候,往往喜欢将另一个表的关联字段变成另一个b ...
- Java丨验证码图片去除干扰像素,方便验证码的识别
1.先来看看效果: 原图 除去干扰像素后 2.解析代码: 1).读取文件夹里面的图片 String fileName = "picture"; BufferedImage img ...
- NYOJ--42--dfs水过||并查集+欧拉通路--一笔画问题
dfs水过: /* Name: NYOJ--42--一笔画问题 Author: shen_渊 Date: 18/04/17 15:22 Description: 这个题用并查集做,更好.在练搜索,试试 ...