使用dom4j 解析xml文件
//使用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文件的更多相关文章
- 【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文件
<?xml version="1.0" encoding="UTF-8"?> <!-- 手机的根节点 --> <Phones> ...
- 用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 ...
随机推荐
- open_basedir restriction in effect,解决php引入文件权限问题
一.前言 今天在Ubuntu安装了lnmp环境,运行项目的时候出现了,引入500的错误 二.查看错误 再项目文件入口添加,代码显示错误内容,查看到一下错误 ini_set('display_error ...
- python中用locust做简单的压力测试
验证导入包成功 首先导入locust模块,百度一下导入方法很多,就不多说了 验证导入成功或失败,在终端中(windows中是cmd)输入:locust --help 导入成功后会出现如下界面: 编辑运 ...
- java基础之接口(抽象类与接口的区别)
概述 猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯的,这应该属于经过特殊的培训训练出来的,对不.所以,这些额外的动作定义到动物类中就不合适,也不适合直 ...
- Latex appendix 生成附录A和B
第一种: \documentclass[a4paper,12pt]{cctart} \begin{document} main body %正文内容 \appendix \renewc ...
- 根据高德API知道坐标获取详细地址信息
/** * 根据坐标获取具体地址 * @param coor 坐标字符串 * @return */ public static String getAdd(String coor){ String u ...
- 打开office时提示错误窗口“向程序发送命令时出现问题”的解决方案
今天同事问了我一件很怪异的事情,说她的office打不开了,如打开word或excel时,突然出现错误提示错误窗口"向程序发送命令时出现问题",分析原因才知道她安装了 AVG pc ...
- 【Unity游戏开发】浅谈Lua和C#中的闭包
一.前言 目前在Unity游戏开发中,比较流行的两种语言就是Lua和C#.通常的做法是:C#做些核心的功能和接口供Lua调用,Lua主要做些UI模块和一些业务逻辑.这样既能在保持一定的游戏运行效率的同 ...
- VMware workstation的基础使用
1. VMware workstation虚拟化平台简介2. VMware workstation提供网络资源3. VMware workstation提供存储资源4. VMware workstat ...
- 【爆料】-《澳大利亚联邦大学毕业证书》FedUni一模一样原件
☞澳大利亚联邦大学毕业证书[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士& ...
- Polaristech 刘洋:基于 OpenResty/Kong 构建边缘计算平台
2019 年 3 月 23 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·北京站,Polaristech 技术专家刘洋在活动上做了<基于 ...