//使用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. Angular 6的新特性介绍

    2018年5月4日,Angular6.0.0版正式发布,新版本主要关注底层框架和工具链,目的在于使其变得更小更快.下面就介绍下新版本的一些主要新特性,供大家参考. ng update ng updat ...

  2. Java单元测试初体验(JUnit4)

    什么是单元测试 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的.但是,我们同时应 ...

  3. java集合框架之LinkedList

    参考http://how2j.cn/k/collection/collection-linkedlist/370.html LinkedList 与 List接口 与ArrayList一样,Linke ...

  4. 【bzoj 4173】数学

    Description Input 输入文件的第一行输入两个正整数 . Output 如题 Sample Input 5 6 Sample Output 240 HINT N,M<=10^15 ...

  5. ubuntu ssh 免密码登录

    1 ssh 是什么? ssh 是一种 加密协议,ssh 是两个加密的密码,一个是公钥一个是私钥,公钥加密的信息只有是要才能解密.ssh协议可用于服务之间的通信.例如:登录验证,git的授权等等 2 s ...

  6. 基于ko-easyui实现的PC前端模板功能完善

    上一篇博客我向大家介绍了基于ko-easyui实现的开发模板,博客地址:https://www.cnblogs.com/cqhaibin/p/9825465.html#4095185.但在还遗留三个问 ...

  7. Java进阶篇之十五 ----- JDK1.8的Lambda、Stream和日期的使用详解(很详细)

    前言 本篇主要讲述是Java中JDK1.8的一些新语法特性使用,主要是Lambda.Stream和LocalDate日期的一些使用讲解. Lambda Lambda介绍 Lambda 表达式(lamb ...

  8. Spring Boot Web 自定义注解篇(注解很简单很好用)

    自从spring 4.0 开放以后,可以添加很多新特性的注解了.使用系统定义好的注解可以大大方便的提高开发的效率. 下面我贴一段代码来讲解注解: 通过小小的注解我们支持了以下功能: 使 spring. ...

  9. SQL优化指南

    慢查询日志 开启撒网模式 开启了MySQL慢查询日志之后,MySQL会自动将执行时间超过指定秒数的SQL统统记录下来,这对于搜罗线上慢SQL有很大的帮助. SHOW VARIABLES LIKE 's ...

  10. 深入理解Linux内核 学习笔记(5)

    第五章  定时测量 内核必须显式地与三种时钟打交道:实时时钟(Real Time Clock, RTC).时间标记计数器(Time Stamp Counter, TSC)及可编程间隔定时器( Prog ...