//使用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. open_basedir restriction in effect,解决php引入文件权限问题

    一.前言 今天在Ubuntu安装了lnmp环境,运行项目的时候出现了,引入500的错误 二.查看错误 再项目文件入口添加,代码显示错误内容,查看到一下错误 ini_set('display_error ...

  2. python中用locust做简单的压力测试

    验证导入包成功 首先导入locust模块,百度一下导入方法很多,就不多说了 验证导入成功或失败,在终端中(windows中是cmd)输入:locust --help 导入成功后会出现如下界面: 编辑运 ...

  3. java基础之接口(抽象类与接口的区别)

    概述 猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯的,这应该属于经过特殊的培训训练出来的,对不.所以,这些额外的动作定义到动物类中就不合适,也不适合直 ...

  4. Latex appendix 生成附录A和B

    第一种: \documentclass[a4paper,12pt]{cctart} \begin{document}     main body %正文内容   \appendix   \renewc ...

  5. 根据高德API知道坐标获取详细地址信息

    /** * 根据坐标获取具体地址 * @param coor 坐标字符串 * @return */ public static String getAdd(String coor){ String u ...

  6. 打开office时提示错误窗口“向程序发送命令时出现问题”的解决方案

    今天同事问了我一件很怪异的事情,说她的office打不开了,如打开word或excel时,突然出现错误提示错误窗口"向程序发送命令时出现问题",分析原因才知道她安装了 AVG pc ...

  7. 【Unity游戏开发】浅谈Lua和C#中的闭包

    一.前言 目前在Unity游戏开发中,比较流行的两种语言就是Lua和C#.通常的做法是:C#做些核心的功能和接口供Lua调用,Lua主要做些UI模块和一些业务逻辑.这样既能在保持一定的游戏运行效率的同 ...

  8. VMware workstation的基础使用

    1. VMware workstation虚拟化平台简介2. VMware workstation提供网络资源3. VMware workstation提供存储资源4. VMware workstat ...

  9. 【爆料】-《澳大利亚联邦大学毕业证书》FedUni一模一样原件

    ☞澳大利亚联邦大学毕业证书[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士& ...

  10. Polaristech 刘洋:基于 OpenResty/Kong 构建边缘计算平台

    2019 年 3 月 23 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·北京站,Polaristech 技术专家刘洋在活动上做了<基于 ...