使用dom4j 解析xml文件
//使用dom4j 解析xml文件,升级版,dom4j是对dom的封装 //重点
package com.offcn.utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import org.dom4j.Document; //导这个包dom4j
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
//使用dom4j 解析xml文件,升级版,dom4j是对dom的封装 //重点
public class ShowInfoUtils {
public static void main(String[] args) {
ShowInfoUtils s = new ShowInfoUtils();
s.getDocument();
s.showInfo();
// s.delete();
// s.update();
// s.showWrite("src/new2.xml");
// s.add();
// s.showWrite("src/new4.xml");
// s.showWrite("src/new1.xml");
// s.showInfo();
}
public Document doc;
//加载doc对象
//获得doc对象
public void getDocument(){
try {
SAXReader sr = new SAXReader();
doc=sr.read(new File("src/phone.xml"));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//删除一个节点
public void delete(){
Element e = doc.getRootElement(); //得到根节点
Iterator iter = e.elementIterator(); //拿到迭代器
//对迭代器进行遍历
while(iter.hasNext()){
Element ele=(Element)iter.next(); //返回的是object,要强转
if(ele.attributeValue("name").equals("三星")){
ele.getParent().remove(ele);
}
}
}
//删除之后 开始写入xml文件中
public void showWrite(String path){
//格式化类,设置编码格式
try {
OutputFormat outputFormat = OutputFormat.createCompactFormat();
outputFormat.setEncoding("utf-8");
//dom4j给我们提供了一个写入的类
XMLWriter xWriter = new XMLWriter(new FileOutputStream(path),outputFormat);
xWriter.write(doc);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//修改 ,加一个id
public void update(){
//获得根节点
Element e = doc.getRootElement();
Iterator iterator =e.elementIterator();
int num=0;
while(iterator.hasNext()){
Element element = (Element)iterator.next();
num++;
element.setAttributeValue("id", num+"");
}
}
//增加一个Brand
public void add(){
Element e = doc.getRootElement();
// Iterator iter = e.elementIterator();
Element elementBrand = e.addElement("Brand");
elementBrand.setAttributeValue("name", "华为");
Element elementType = elementBrand.addElement("Type");
elementType.setAttributeValue("name", "galax");
e.appendContent(elementBrand);
}
//展示XML信息
public void showInfo(){
//得到根节点,也就是XML里的Phones节点
Element e = doc.getRootElement();
//得到所有的brand对象,然后进行遍历
Iterator iterator = e.elementIterator(); //拿到迭代器
//判断是否有下一个元素
while(iterator.hasNext()){
//拿到具体的元素
Element elementBrand = (Element)iterator.next(); //此时找到了brand标签,
String elementBranValue = elementBrand.attributeValue("name"); //找到name属性对应的值
System.out.println(elementBranValue); //输出三星 苹果
//得到儿子的节点
Iterator elementIterator = elementBrand.elementIterator(); //拿到Brand迭代器
while(elementIterator.hasNext()){
Element ele= (Element)elementIterator.next(); //得到每一个子标签
String s = ele.attributeValue("name");
System.out.println(s);
}
}
}
}
//这是XML文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 手机的根节点 -->
<Phones>
<Brand name="三星">
<Type name="note4">note4</Type>
<Type name="note5">note5</Type>
</Brand>
<Brand name="苹果">
<Type name="iphone7">iphone7</Type>
<Type name="iphone8">iphone8</Type>
<Type name="iphone9">iphone9</Type>
</Brand>
</Phones>
使用dom4j 解析xml文件的更多相关文章
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 用DOM4J解析XML文件案例
用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:
- 使用DOM4J解析XMl文件与读取XML文件
XML文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...
- dom4j 解析XML文件
<?xml version="1.0" encoding="UTF-8"?> <!-- 手机的根节点 --> <Phones> ...
- 用dom4j解析xml文件并执行增删改查操作
转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
随机推荐
- sql server按符号截取字符串
http://www.360doc.com/content/12/0626/13/1912775_220523992.shtml
- 「JavaScript」JS四种跨域方式详解
原文地址https://segmentfault.com/a/1190000003642057 超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript ...
- Python字符编码与转码
字符编码与转码 注: 该图转自 http://www.cnblogs.com/luotianshuai/p/5735051.html. Python2 解码,编码 #Python2 #-*- codi ...
- Java并发编程(五)锁的使用(下)
显式锁 上篇讲了使用synchronized关键字来定义锁,其实Java除了使用这个关键字外还可以使用Lock接口及其实现的子类来定义锁,ReentrantLock类是Lock接口的一个实现,Reen ...
- 【BZOJ 3697】采药人的路径
题目链接: TP 题解: 调了好久233. 大概想一想就是树分,然后考虑这样路径(u,v)的特征,以根节点(root)切开,u到root的阴阳差值,和v到root巧合互为相反数,然后考虑要有一个点可作 ...
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after co ...
- pyspark列合并为一行
将 dataframe 利用 pyspark 列合并为一行,类似于 sql 的 GROUP_CONCAT 函数.例如如下 dataframe : +----+---+ | s| d| +----+-- ...
- Hadoop大数据部署
Hadoop大数据部署 一. 系统环境配置: 1. 关闭防火墙,selinux 关闭防火墙: systemctl stop firewalld systemctl disable firewalld ...
- asp.net core系列 45 Web应用 模型绑定和验证
一. 模型绑定 ASP.NET Core MVC 中的模型绑定,是将 HTTP 请求中的数据映射到action方法参数. 这些参数可能是简单类型的参数,如字符串.整数或浮点数,也可能是复杂类型的参数. ...
- Java进阶篇 设计模式之十四 ----- 总结篇
前言 本篇是讲述之前学习设计模式的一个总结篇,其目的是为了对这些设计模式的进行一个提炼总结,能够通过查看看此篇就可以理解一些设计模式的核心思想. 设计模式简介 什么是设计模式 设计模式是一套被反复使用 ...