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文档进行遍历,更新,创建,删除的更多相关文章

  1. java 解析XML文档

    Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...

  2. Java解析XML文档(简单实例)——dom解析xml

      一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...

  3. Java解析XML文档——dom解析xml

    一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...

  4. 浅谈用java解析xml文档(四)

    继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...

  5. 浅谈用java解析xml文档(三)

    接上一篇,本文介绍使用JDOM解析xml文档, 首先我们还是应该知道JDOM从何而来,是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初, JDOM作 ...

  6. 浅谈用java解析xml文档(一)

    关于xml本身的语法及使用的环境不多说了,网上有很多规则, 然对xml文档进行解析,一般分为四种解析方式,基于java官方文档的Dom 和Sax解析,还有就是基于 第三方jar包的 Jdom 和 Do ...

  7. java解析xml文档(dom)

    DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...

  8. java将XML文档转换成json格式数据

    功能 将xml文档转换成json格式数据 说明 依赖包:1. jdom-2.0.2.jar : xml解析工具包;2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 ...

  9. 浅谈用java解析xml文档(二)

    上一文中总结了dom解析xml文档的方式,本文开始总结使用SAX解析xml 的方式及它的优缺点! SAX(Simple API for XML),是指一种接口,或者一个软件包. 首先我们应该知道SAX ...

随机推荐

  1. UC何小鹏:移动互联网创业需警惕五大“不靠谱

    http://tech.qq.com/a/20140121/012443.htm 腾讯科技 启言 1月21日报道 移动互联网创业很容易犯错误,一不小心就陷入“坑”中.UC也是如此.近日,UC创始人何小 ...

  2. 如何使用GetManifestResourceStream

    在做开发时想要从程序集中加载一个xml文件数据,可是在运行后确取不到值,值始终是null. 代码如下: Stream ss = this.GetType().Assembly.GetManifestR ...

  3. Moduli number system

    A number system with moduli is defined by a vector of k moduli, [m1,m2, ···,mk]. The moduli must be p ...

  4. js中字符串转换为日期和比较大小

    本文转载于:http://yun342173024.iteye.com/blog/1873756在做前端校验的时候,要做日期比较的校验,在js中把字符串转化为日期,一时之间还真不知道在js中怎么把一个 ...

  5. 从头开始编写一个Orchard网上商店模块(5) - 创建和渲染ProductCatalog的内容类型

    原文地址: http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-pa ...

  6. aspx页面记住密码

    界面 点击登录按钮的代码 protected void btnLogin_Click(object sender, EventArgs e) { if (remember_long.Checked) ...

  7. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.4

    (1). The singular value decomposition leads tot eh polar decomposition: Every operator $A$ can be wr ...

  8. 提升WI-FI信号强度的10大方法

    原文链接:http://server.51cto.com/Net-402889.htm

  9. windows下利用dll生成lib

    原来工程编译的一些dll库,这次项目需要静态库,偷懒想直接转化.看到网上一些教程,使用VC工具和建立lib项目来实现.有点麻烦.还有一种方法,仅仅利用工具和几条命令转化.来试试看.文章参考harrie ...

  10. 关于arm处理器 内存编址模式 与 字节对齐方式 (转)

    转自:http://bavon.bokee.com/5429805.html 在x86+Linux上写的程序,在PC机上运行得很好.可是使用ARM的gcc进行交叉编译,再送到DaVinci目标板上运行 ...