使用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 ...
随机推荐
- dva/docs/GettingStarted.md
进入目录安装依赖: npm i 或者 yarn install开发: npm run dev npm install 太慢,试试yarn吧.建议用npm install yarn -g进行安装. Co ...
- Android 不规则封闭区域填充 手指秒变油漆桶
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45954255: 本文出自:[张鸿洋的博客] 一.概述 在上一篇的叙述中,我们通 ...
- RabbitMQ (五)主题(Topic)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37706355 上一篇博客中,我们进步改良了我们的日志系统.我们使用direct类 ...
- ASP.Net MVC 在控制器中获取View中的form表单值的方法
在网站开发中,我们常常需要用到表单提交的方式,那么在MVC中是如何获取到表单中的数据呢?下面我们来介绍以下几种方式 首先我们先看看View前台页面 添加一个控制器 我们再看看前台页面的代码 @{ La ...
- Python字符编码与转码
字符编码与转码 注: 该图转自 http://www.cnblogs.com/luotianshuai/p/5735051.html. Python2 解码,编码 #Python2 #-*- codi ...
- 转载:python + requests实现的接口自动化框架详细教程
转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...
- 如何把word中的图片怎么导出来呢?
在办公使用word的过程中你可能经常会遇到这个问题:插入到word中的图片找不到导出来的方法,是不是很郁闷呢,别急,今天咱们研究一下把word中的图片导出来的方法(把"我的"变成你 ...
- AJAX初步学习
AJAX(Asynchronous JavaScript and XML)即异步的JavaScript与XML技术,指的是一套综合了多项技术的浏览器端网页开发技术.其实就是为了解决传统页面同步刷新,消 ...
- linux文件的基本属性
Linux 文件基本属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规 ...
- C#爬虫使用代理刷csdn文章浏览量
昨天写了一篇关于“c#批量抓取免费代理并验证有效性”的文章,接着昨天的目标继续完成吧,最终实现的目的就是刷新csdn文章的浏览量(实际上很简单,之前博客园的文章也是可以使用代理ip来刷的,后来不行了) ...