dom4j 解析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>
//这是XML文件
//创建测试类
package com.Denfeng.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);
}
}
}
}
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文件
//使用dom4j 解析xml文件,升级版,dom4j是对dom的封装 //重点 package com.offcn.utils; import java.io.File; import java.i ...
- 用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 ...
随机推荐
- php的运行原理、cgi对比fastcgi以及php-cgi和php-fpm之间的联系区别
最近项目中本地测试环境遇到了windows环境下的nginx使用file_get_contents/curl访问php文件导致的阻塞问题,一直在找解决的方案,这个问题研究了三天终于找到了解决方案,特别 ...
- css伪类及伪元素用法
注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active 大致效果为用鼠标 ...
- 《笨方法学Python》加分题29
加分练习猜一猜 “if 语句” 是什么,他有什么作用.在做下一道题之前,试着用自己的话回答下面的问题: 你认为 if 对他下一行代码做了什么?为什么 if 语句的下一行需要 4 个空格缩进?如果不缩进 ...
- NC 6.X笔记(编辑中)
1.参照多选 写在编辑前事件中 ((UIRefPane) editor.getBillCardPanel().getBodyItem("pk_wa_item").getCompon ...
- 01-SpringMVC 原理
说明:所有代码调式的环境:开发环境idea,jdk7,tomcat8.5.27,数据库MySQL5.1,spring3.2 SpringMVC 1.什么是SpringMVC? springmvc是sp ...
- PID25 / 合并果子 ☆
这里用到了STL里面的priority_queue,我也不是很精通基本上属于现学现卖阶段,http://www.cnblogs.com/flyoung2008/articles/2136485.htm ...
- 分布式文件系统 fastdfs搭建
fastdfs第一步:在home文件夹下建立tar文件夹第二步:cd /home/tar///(Libevent 是一个用C语言编写的.轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( e ...
- Java实现AES加密,异常java.security.InvalidKeyException: Illegal key size 的解决
Java实现AES加密,抛出异常如下:java.security.InvalidKeyException: Illegal key size 代码参考 http://my.oschina.net/Ja ...
- font-size:0的妙用,用于解决inline或者inline-block造成的间隙
1.图片间的缝隙(图片间的间隙一般是由换行.缩进造成的) <div> <img src="1.jpg"> <img src="2.jpg&q ...
- Unity打包提示UnityEditor.BuildPlayerWindow+BuildMethodException: Build failed with errors.错误
不要将打包的输出路径设置为Assets文件夹下面即可,MD真坑 老外给出的解释: As you have noticed after you click build settings you are ...