//使用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. oracle+mybatis 使用动态Sql在要insert的字段不确定的情况下实现批量insert

    最近做项目遇到一个挺操蛋的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰. 先来看一下最终我是怎么实现的: <insert id ...

  2. HTML5 CSS3 专题 :诱人的实例 3D展示商品信息

    强化下perspective和transform:translateZ的用法.传统的商品展示或许并不能很好的吸引用户的注意力,但是如果在展示中添加适当的3D元素,~说不定效果不错哈~ 效果图: 说明一 ...

  3. python assert的作用

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...

  4. 如何解决-win7系统打开截图工具显示“截图工具当前未在计算机上运行”

    打开win7系统自带截图工具,显示"截图工具当前未在计算机上运行.请重新启动计算机,然后重试",  解决方法  1.首先在C盘中搜索tpcps.dll: 2.将数据最大那个tpcp ...

  5. req_params.go

    , fmt.Sprintf("%s: closing %s", proto, listener.Addr())) }

  6. Dubbo中暴露服务的过程解析

    dubbo暴露服务有两种情况,一种是设置了延迟暴露(比如delay="5000"),另外一种是没有设置延迟暴露或者延迟设置为-1(delay="-1"): 设置 ...

  7. MYSQL—— char 与 varchar的区别!

    一.char 和 varchar 的区别: 1)取值范围: char:取值范围:0~255 varchar:取值范围:0~65535 2)空间占用与速度: char: 定长字符串,占用空间大,速度快, ...

  8. Flask导入静态文件问题

    然而如果使用flask开发web,并且需要在本地导入已经写好的css js 文件或者image一系列,这些文件是静态文件,需要另外建一个文件夹static;并且在html文件修改导入方法,exampl ...

  9. 深入理解数据库磁盘存储(Disk Storage)

    数据库管理系统将数据存储在磁盘.磁带以及其他的裸设备上,虽然这些设备的访问速度相比内存慢很多,但其非易失性和大容量的特点使他们成为数据存储的不二之选. 本文主要讨论大型数据库产品的磁盘存储内部结构,这 ...

  10. 全面理解 javascript 的 argements caller callee call apply 之caller

    /** * 演示arguments的用法,如何获取实参数和形数数 */ function argTest(a,b,c,d){ var numargs = arguments.length; // 获取 ...