用Java对xml文档进行遍历,更新,创建,删除
import java.io.File;
import java.io.FileInputStream;
import javax.imageio.stream.FileImageInputStream;
import javax.xml.crypto.dsig.Transform;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
//这里如果你的users是建立在当前文件夹相同的位置,就可以像现在这样写直接就把文件名写成users.xml---》在src同目录下的程序,
//如果不是就要写把文件地址写详细;
public class docs {
@Test
public void dos() throws Exception{
DocumentBuilder db=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document dom=db.parse(new File("users.xml"));
Node root=dom.getFirstChild();
System.out.println(root.getNodeName());
System.out.println("------------------------");
Element en=(Element)dom.getElementsByTagName("user").item(1);//这里是获得第二个user标签
String id=en.getAttribute("id");//这里是获取标签的属性
System.out.println(id);
String age=en.getElementsByTagName("age").item(0).getTextContent();//这里是获取age标签里面的文本内容
System.out.println("age="+age);
System.out.println("<------------------------>");
}
private final String FILE_NAME="users.xml";
//修改;
@Test
public void dess() throws Exception{
DocumentBuilder dbs=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document dom=dbs.parse(new FileInputStream(FILE_NAME));
Element el=(Element) dom.getFirstChild();
NodeList list=el.getElementsByTagName("user");
Element es=(Element)list.item(list.getLength()-1);
es.getElementsByTagName("age").item(0).setTextContent("60");
//setTextContent这里是设置文本内容;
System.out.println("value="+ es.getElementsByTagName("age").item(0).getTextContent());
//这里是将改动过发dom树存储到外面的磁盘文件
Transformer tfm=TransformerFactory.newInstance().newTransformer();
tfm.transform( new DOMSource(dom),new StreamResult(FILE_NAME));
}
//这里是增加结点
@Test
public void creat() throws Exception{
DocumentBuilder bdg= DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document dm= bdg.parse(new FileInputStream(FILE_NAME));//这里是获取了xml文档对象
Element root=(Element) dm.getFirstChild();
Element eUser=dm.createElement("user");
eUser.setAttribute("id", "A009");
Element ename=dm.createElement("name");
ename.setTextContent("小敏");
Element eage=dm.createElement("age");
eage.setTextContent("22");
//构建一个user子树
eUser.appendChild(ename);
eUser.appendChild(eage);
//将user子树挂到users上去;
root.appendChild(eUser);
Transformer tfd=TransformerFactory.newInstance().newTransformer();
tfd.transform(new DOMSource(dm), new StreamResult( FILE_NAME));
}
//删除最后一个结点;
@Test
public void delect() throws Exception{
DocumentBuilder dom=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document dm=dom.parse(FILE_NAME);
Element root=(Element) dm.getFirstChild();
NodeList list=root.getElementsByTagName("user");
Node eUser=list.item(list.getLength()-1);
eUser.getParentNode().removeChild(eUser);
Transformer tfg=TransformerFactory.newInstance().newTransformer();
tfg.transform(new DOMSource(dm), new StreamResult(FILE_NAME));
}
}
用Java对xml文档进行遍历,更新,创建,删除的更多相关文章
- java 解析XML文档
Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...
- Java解析XML文档(简单实例)——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...
- Java解析XML文档——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...
- 浅谈用java解析xml文档(四)
继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...
- 浅谈用java解析xml文档(三)
接上一篇,本文介绍使用JDOM解析xml文档, 首先我们还是应该知道JDOM从何而来,是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初, JDOM作 ...
- 浅谈用java解析xml文档(一)
关于xml本身的语法及使用的环境不多说了,网上有很多规则, 然对xml文档进行解析,一般分为四种解析方式,基于java官方文档的Dom 和Sax解析,还有就是基于 第三方jar包的 Jdom 和 Do ...
- java解析xml文档(dom)
DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...
- java将XML文档转换成json格式数据
功能 将xml文档转换成json格式数据 说明 依赖包:1. jdom-2.0.2.jar : xml解析工具包;2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 ...
- 浅谈用java解析xml文档(二)
上一文中总结了dom解析xml文档的方式,本文开始总结使用SAX解析xml 的方式及它的优缺点! SAX(Simple API for XML),是指一种接口,或者一个软件包. 首先我们应该知道SAX ...
随机推荐
- The Little Redis Book
一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...
- C++默认构造函数
原文链接:http://wenku.baidu.com/link?url=Qh59sZlrT7dAZwjkKqhUiUU2yq2GZams7wEQ9ULkYC7FgArX5adcp1EXVw_jqjf ...
- Fedora 17下交叉编译vlc-2.0.6-win32小记
关于编译windows下的vlc网上的教程除了翻译N年前wiki官网的那些蚂蚁文之外,可以说基本没啥参考意义和价值.因为那些都是非常老的版本,0.8.x或者1.x.x,而我这个人有喜欢新鲜事儿,所以就 ...
- bzoj2738
感人肺腑pascal过不去系列,跪求开O2先不说这个了,学完cdq分治之后又顺手学了一下整体二分感觉这两个东西很多相似的地方,干脆都叫cdq分治好了二分解决k小就是设当前二分的答案为m,把x<= ...
- Setting Up the ADT Bundle
Setting Up the ADT Bundle The ADT Bundle provides everything you need to start developing apps, incl ...
- 2DPlatformer-SLua 编辑器 UI 美化
在我的开源项目 2DPlatformer-SLua 中,YwLuaMonoBehaviour 是非常重要的一个组件,它负责从 MonoBehaviour 中直接驱动内建的事件到 Lua 中的类和逻辑, ...
- Hadoop datanode无法启动的错误
在启动Hadoop分布式部署的过程中,发现datanode没有正常启动,查看了一下日志发现报错: java.io.IOException: Incompatible clusterIDs in /op ...
- LittleTools之网格输出为模型
我经常要在Unity中生成一些网格,但是这些网格需要交给美工修改,所以又要将网格输出为模型.于是就有了下面的代码: using UnityEngine; using UnityEditor; usin ...
- 在win7的虚拟机中LINUX与winxp两客户机互通问题
本人实际操作:两个虚拟机都选Host-Onl,查看主机VirtualBox Host-Only Network ip地址为192.168.56.1,那我让linux,windowsxp都让为该网址19 ...
- CF_216_Div_2
比赛链接:http://codeforces.com/contest/369 369C - Valera and Elections: 这是一个树上问题,用深搜,最开始贪心想得是只加叶子节点,找到一个 ...