dom4j解析器sax解析xml文件
1.使用dom4j解析器解析xml
***解析器dom4j是由dom4j组织提供的,针对xml进行解析。dom4j不是Javase的一部分,使用时需要导入dom4j的jar包(官网下载)
在eclipse里,复制jar包,然后新建文件夹lib粘贴进入,然后单击鼠标右键jar包----->build path----->add to build path
看到jar包变成奶瓶样子,表示导入成功。
* 得到document对象
SAXReader reader=new SAXReader();
Document document=reader.read(url);
*document对象的父接口是Node
**如果在document对象里找不到想要的方法,就去Node里面去找。
*document里的方法getRootElement():得到根节点,并返Element
*Element也是一个接口,父接口是Node
**Element和Node里的方法
getParent():获取父节点
addElement():添加标签
需求:查询所有name元素里的值
代码:
animal.xml
<?xml version="1.0" encoding="UTF-8"?>
<animal>
<cat id1="sususu">
<name>汤姆</name>
<color>black</color>
<age>10</age>
</cat>
<cat>
<name>丑小鸭</name>
<color>yellow</color>
<age>15</age>
</cat>
</animal>
dom4j.java
package example4;
import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
class dom4j{
public static void main(String[] args) throws Exception {
/*selectName();
selectOne();
selectSecond();
addsex();*/
addNameBefore();
modifyAge();
deleteFriend();
}
//查询第一个name元素的值
public static void selectOne() throws Exception {
SAXReader saxreader = new SAXReader();
Document document = saxreader.read("src/example4/animal.java");
Element root = document.getRootElement();
Element cat = root.element("cat");
Element name = cat.element("name");
String s=name.getText();
System.out.println(s);
}
//在第一个标签cat的末尾添加一个<sex>男</sex>标签
public static void addsex() throws DocumentException, Exception {
SAXReader saxreader=new SAXReader();
Document document=saxreader.read("src/example4/animal.xml");
Element root=document.getRootElement();
//得到第一个cat元素
Element cat1=root.element("cat");
//在cat虾米那直接添加元素
Element sex1=cat1.addElement("sex");
//在sex下面添加文本
sex1.setText("男");
//回写xml
//这是一个漂亮的格式,可以有缩进的效果
OutputFormat format=OutputFormat.createPrettyPrint();
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src/example4/animal.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
//在特定位置添加新标签,在第二个cat标签之前添加<friend>丫丫</friend>
public static void addNameBefore() throws Exception {
SAXReader saxReader=new SAXReader();
Document document=saxReader.read("src/example4/animal.xml");
Element root=document.getRootElement();
List<Element> list=root.elements("cat");
//创建元素使用
Element friend=DocumentHelper.createElement("friend");
friend.setText("丫丫");
list.add(1, friend);
//回写xml
OutputFormat format=OutputFormat.createPrettyPrint();
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src/example4/animal.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
//修改第一个cat下的<age>30</age>
public static void modifyAge() throws Exception {
SAXReader saxReader=new SAXReader();
Document document=saxReader.read("src/example4/animal.xml");
Element root=document.getRootElement();
Element cat1=root.element("cat");
Element age=cat1.element("age");
age.setText("30");
OutputFormat format=OutputFormat.createPrettyPrint();
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src/example4/animal.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
// 删除第一个cat下面的<fdeleteFriend()riend>丫丫</friend>
public static void deleteFriend() throws Exception {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/example4/animal.xml");
Element root = document.getRootElement();
Element friend = root.element("friend");
// 删除friend元素
// 通过父元素来删除子元素
//获取父节点
//Element parent=friend.getParent();
root.remove(friend);
// 这是一个漂亮的格式,可以有缩进的效果
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/example4/animal.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
//获取第一个cat里面的属性的值
public static void getValues() throws Exception {
SAXReader saxreader = new SAXReader();
Document document = saxreader.read("src/example4/animal.xml");
Element root = document.getRootElement();
Element cat = root.element("cat");
//得到属性值
String id1=cat.attributeValue("id1");
System.out.println(id1);
}
// 获取第二个name元素里的值
public static void selectSecond() throws Exception {
SAXReader saxreader=new SAXReader();
Document document=saxreader.read("src/example4/animal.xml");
Element root=document.getRootElement();
List<Element> list=root.elements("cat");
Element cat2=list.get(1);
Element name2=cat2.element("name");
String s=name2.getText();
System.out.println(s);
}
// 查询xml中所有name元素的值
public static void selectName() throws Exception {
// 创建解析器
SAXReader saxreader = new SAXReader();
//得到document对象
Document document=saxreader.read("src/example4/animal.xml");
//得到根节点
Element root=document.getRootElement();
//得到cat结点
List<Element> list=root.elements("name");
//得到cat元素下的name元素
for (Element element: list) {
//element是每一个cat元素
//得到cat下面的name元素
Element name1=element.element("name");
String s=name1.getText();
System.out.println(s);
}
}
}


dom4j解析器sax解析xml文件的更多相关文章
- Dom4j解析和sax解析xml
xml基础知识 1)标签对大小写敏感,2)xml解析方式有两种dom解析和sax解析 3)常用的解析工具有dom的dom4j和sax的sax解析工具 4)文档声明中使用<?xml versio ...
- XML 解析---dom解析和sax解析
眼下XML解析的方法主要用两种: 1.dom解析:(Document Object Model.即文档对象模型)是W3C组织推荐的解析XML的一种方式. 使用dom解析XML文档,该解析器会先把XML ...
- Android XML文档解析(一)——SAX解析
---------------------------------------------------------------------------------------------------- ...
- 使用Dom解析器,操作XML里面的信息
import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;impo ...
- XML解析(二) SAX解析
XML解析之SAX解析: SAX解析器:SAXParser类同DOM一样也在javax.xml.parsers包下,此类的实例可以从 SAXParserFactory.newSAXParser() 方 ...
- XML的概述,.Dom4解析和SAX解析
1.什么是XML XML 指可扩展标记语言(EXtensible Markup Language) html(hyper text markup langauge) XML 是一种标记语言,很类似 H ...
- 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- XML解析之SAX解析过程代码详解
上一篇谢了解析原理和过程,这里应用代码直观认识这个原理: 新建Demo1类: import java.io.File; import javax.xml.parsers.SAXParser; impo ...
- 经典面试题:一张表区别DOM解析和SAX解析XML
============DOM解析 vs ...
随机推荐
- css随堂笔记(三)
Css随堂笔记(三) 1 关于背景图片 A 设置背景图片:background-image:url(“图片的路径”): B 背景图片位置: background-position:1 方位名词 ...
- IOS APP 瘦身
只保留其中一宗编译环境包 lipo -thin armv7 XXAPP -output XXAPP.armv7
- 使用CTE公用表表达式的递归查询(WITH AS)
公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE.递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式. 当某个查询引用递归 ...
- 5.Zabbix 3.0案例
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=15d986179cb65b45c5824e90995109ee&sub=D2E73572D97 ...
- python编写脚本,删除固定用户下的所有表
脚本如下: [oracle@ycr python]$ more t_del.py #/usr/bin/python#coding:utf8 import sysimport cx_Oracle i=0 ...
- NO.005-2018.02.10《南歌子词二首 / 新添声杨柳枝词》唐代:温庭筠
南歌子词二首 / 新添声杨柳枝词_古诗文网 南歌子词二首 / 新添声杨柳枝词 唐代:温庭筠(yún) 一尺深红胜曲尘,天生旧物不如新.(胜曲尘 一作:蒙曲尘)一袭深红色的长裙日子久了便蒙上了淡黄色,自 ...
- 找出OData service出错根源的小技巧
SAP的Fiori应用是通过OData和后台交互的.在使用Fiori应用时您可能会遇到这样的错误消息: 这个错误消息没有包含有助于partner或者客户定位问题根源的线索. 下面是如何在后台找出问题根 ...
- python:类的基本特征------继承、多态与封装
一.继承 1,什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 cl ...
- intellij 无法导入 SimpleTagSupport问题
主要原因还是导包问题: 需要导入2个包: 之前,我只导入 servlet-api.jar ,总是报错,最后导入jsp-api.jar后,才成功可以继承!
- GPU CUDA编程中threadIdx, blockIdx, blockDim, gridDim之间的区别与联系
前期写代码的时候都会困惑这个实际的threadIdx(tid,实际的线程id)到底是多少,自己写出来的对不对,今天经过自己一些小例子的推敲,以及找到官网的相关介绍,总算自己弄清楚了. 在启动kerne ...