//使用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文件的更多相关文章

  1. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  2. 用DOM4J解析XML文件案例

    用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:

  3. 使用DOM4J解析XMl文件与读取XML文件

    XML文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...

  4. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  5. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  6. dom4j 解析XML文件

    <?xml version="1.0" encoding="UTF-8"?> <!-- 手机的根节点 --> <Phones> ...

  7. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

  8. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  9. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

随机推荐

  1. .NET Orm 性能测试

    .NET Orm 性能测试 简介 OrmBenchmark 这个项目主要是为了测试主要的Orm对于 SqlServer 数据库的查询并将数据转换成所需 POCO 对象的耗时情况(好吧,实际上不完全or ...

  2. async 和 await 之异步编程的学习

    async修改一个方法,表示其为异步方法.而await表示等待一个异步任务的执行.js方面,在es7中开始得以支持:而.net在c#5.0开始支持.本文章将分别简单介绍他们在js和.net中的基本用法 ...

  3. 15.app后端怎么设计用户登录方案

    在很多app中,都需要用户的登录操作.登录,就需要用到用户名和密码.为了安全起见,暴露明文密码的次数越少越好.怎么能最大程度避免泄露用户的密码呢?在登录后,app后端怎么去验证和维持用户的登录状态呢? ...

  4. [Poi2012]A Horrible Poem BZOJ2795

    分析: 这是今天下午的考试题,推了2个小时,考试中A掉了 首先,循环串通过字符串hash可以O(1)判断:get_hash(l,r-len)==get_hash(l+len,r);显然可证. 我们其次 ...

  5. BZOJ_4551_[Tjoi2016&Heoi2016]树_树剖+线段树

    BZOJ_4551_[Tjoi2016&Heoi2016]树_树剖+线段树 Description 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为 ...

  6. 文本分布式表示(二):用tensorflow和word2vec训练词向量

    看了几天word2vec的理论,终于是懂了一些.理论部分我推荐以下几篇教程,有博客也有视频: 1.<word2vec中的数学原理>:http://www.cnblogs.com/pegho ...

  7. 部署Chart应用并使用.net core读取Kubernetes中的configMap

    上一篇文章讲了 k8s使用helm打包chart并上传到腾讯云TencentHub,今天就讲一下使用Helm部署应用并使用configMap代替asp.net core 中的appsettings.j ...

  8. 搭建SpringCloud-Eureka 注册中心以及服务提供与调用

    纸上得来终觉浅,绝知此事要躬行啊~果然看着很easy,自己搞起来就是各种坑~各位看官,容我慢慢道来~ 关于springcloud是什么我就不废话了~ Eureka  Eureka(原来以为是缩写,原来 ...

  9. js十大排序算法

    排序算法说明: (1)对于评述算法优劣术语的说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面:不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面: 内排序:所有排 ...

  10. SSRS报表服务随笔(rdl报表服务)-报表参数

    上一篇我们说了创建一个简单的显示报表,但在实际工作中,我们有很多要带条件的报表 现在先认识一下报表数据,首次打开SSDT,报表数据在窗口的左侧,要是找不到了,没关系,在工具栏-视图-最下面的报表数据 ...