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. IPv6 tutorial – Part 8: Special addresses

    https://4sysops.com/archives/ipv6-tutorial-part-8-special-addresses/ The special IPv6 addresses disc ...

  2. Visual Studio Solution Configuration

    https://msdn.microsoft.com/en-us/library/bb166577.aspx Solution configurations store solution-level ...

  3. Covariance and Contravariance in C#, Part One

    http://blogs.msdn.com/b/ericlippert/archive/2007/10/16/covariance-and-contravariance-in-c-part-one.a ...

  4. 应付系统选项 Payables Options

    (N) AP > Setup > Options > Payables Options应付系统选项设置整个应付系统使用的控制项和默认值.我们可以在此窗口中设置默认值,从而简化供应商输 ...

  5. Android开发之PackageManager类

    PackageManger,可以获取到手机上所有的App,并可以获取到每个App中清单文件的所有内容. 设置应用程序版本号在应用程序的manifest文件中定义应用程序版本信息.2个必须同时定义的属性 ...

  6. Linux 性能监测工具总结

    前言: Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存.CPU.硬盘……)出了问题.在Linux系统中,所有的运行参数保存在虚拟目录/ ...

  7. poj2817WordStack(状压)

    链接 与上题类似  预处理一下各字符串之间最大的相同字符数就可以 注意dp要初始为负无穷 #include <iostream> #include<cstdio> #inclu ...

  8. win7 64位系统 pl/sql 无法解析指定的连接标识符解决办法

    我用的是win764位,装好后,装了pl/sql 和toad,都连不上数据库,报错位“无法解析指定的连接标识符” 解决办法,经过研究发现安装目录有问题.默认会安装在“C:\Program Files ...

  9. 在Sharepoint2010中发布VS2010开发的WebPart

    转:http://www.cnblogs.com/bfgl/archive/2012/03/22/2411698.html 本人接触Sharepoint2010到今天为止不到一个月.作为一名老C#程序 ...

  10. C# 获取word批注信息

    今天在Silverlight 应用程序中实现了 获取word文档批注信息 的功能. 在wcf服务继承接口类中编写的函数如下 /// <summary> /// 获取word批注信息 /// ...