使用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 ...
随机推荐
- .NET Orm 性能测试
.NET Orm 性能测试 简介 OrmBenchmark 这个项目主要是为了测试主要的Orm对于 SqlServer 数据库的查询并将数据转换成所需 POCO 对象的耗时情况(好吧,实际上不完全or ...
- async 和 await 之异步编程的学习
async修改一个方法,表示其为异步方法.而await表示等待一个异步任务的执行.js方面,在es7中开始得以支持:而.net在c#5.0开始支持.本文章将分别简单介绍他们在js和.net中的基本用法 ...
- 15.app后端怎么设计用户登录方案
在很多app中,都需要用户的登录操作.登录,就需要用到用户名和密码.为了安全起见,暴露明文密码的次数越少越好.怎么能最大程度避免泄露用户的密码呢?在登录后,app后端怎么去验证和维持用户的登录状态呢? ...
- [Poi2012]A Horrible Poem BZOJ2795
分析: 这是今天下午的考试题,推了2个小时,考试中A掉了 首先,循环串通过字符串hash可以O(1)判断:get_hash(l,r-len)==get_hash(l+len,r);显然可证. 我们其次 ...
- BZOJ_4551_[Tjoi2016&Heoi2016]树_树剖+线段树
BZOJ_4551_[Tjoi2016&Heoi2016]树_树剖+线段树 Description 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为 ...
- 文本分布式表示(二):用tensorflow和word2vec训练词向量
看了几天word2vec的理论,终于是懂了一些.理论部分我推荐以下几篇教程,有博客也有视频: 1.<word2vec中的数学原理>:http://www.cnblogs.com/pegho ...
- 部署Chart应用并使用.net core读取Kubernetes中的configMap
上一篇文章讲了 k8s使用helm打包chart并上传到腾讯云TencentHub,今天就讲一下使用Helm部署应用并使用configMap代替asp.net core 中的appsettings.j ...
- 搭建SpringCloud-Eureka 注册中心以及服务提供与调用
纸上得来终觉浅,绝知此事要躬行啊~果然看着很easy,自己搞起来就是各种坑~各位看官,容我慢慢道来~ 关于springcloud是什么我就不废话了~ Eureka Eureka(原来以为是缩写,原来 ...
- js十大排序算法
排序算法说明: (1)对于评述算法优劣术语的说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面:不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面: 内排序:所有排 ...
- SSRS报表服务随笔(rdl报表服务)-报表参数
上一篇我们说了创建一个简单的显示报表,但在实际工作中,我们有很多要带条件的报表 现在先认识一下报表数据,首次打开SSDT,报表数据在窗口的左侧,要是找不到了,没关系,在工具栏-视图-最下面的报表数据 ...