使用dom解析器对xml文档内容进行增删查改
直接添代码:
XML文档名称(one.xml)
<?xml version="1.0" encoding="UTF-8" standalone="no"?><school>
北京大学
<student>
00012
<name>张三</name>
<birthday name="mmmmmm">8月26日</birthday></student>
</school>
相关Java代码
package Dom; import java.io.FileOutputStream; 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; public class Xml_DOM_resolver {
@Test
public void reading() throws Exception {//读 XML 文档
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。
DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。
Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。
NodeList list = document.getElementsByTagName("name");//获取指定元素名
Node node = list.item(0);//获取元素下的内容
String content = node.getTextContent();
System.out.println(content); } @Test
public void reading1() throws Exception {//读 XML 文档
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。
DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。
Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。
//得到根节点
Node root = document.getElementsByTagName("school").item(0);//获取指定元素名
list(root); } private void list(Node node) {
// TODO Auto-generated method stub
if (node instanceof Element) {//判断当前的是不是元素(标签)
System.out.println(node.getNodeName());
}
NodeList list = node.getChildNodes();//获取当前XML的所有节点
for (int i = 0; i < list.getLength(); i++) {
Node child = list.item(i);
String childname = child.getNodeName();//获取当前节点的元素名称
list(child);
}
} @Test
//得到xml标签中的属性值(name)
public void reading2() throws Exception {//读 XML 文档
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。
DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。
Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。
//在知道是元素的时候可以实现强转
Element root = (Element) document.getElementsByTagName("student").item(0);//获取指定元素名
String nature = root.getAttribute("name");
System.out.println(nature);
} @Test
public void add() throws Exception {//对XML文档进行指定位置添加节点
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。
DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。
Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。
//创建节点
Element brith = document.createElement("birthday");
brith.setTextContent("八月二十五日");
brith.setAttribute("name", "mmmmmm");
//获取参考节点
Element birthnode = (Element) document.getElementsByTagName("birthday").item(0);//获取指定元素名
//把节点挂在student上
Element root = (Element) document.getElementsByTagName("student").item(0);//获取指定元素名
root.insertBefore(brith, birthnode);
// root.appendChild(brith);
//把更新后的内存数写回去
TransformerFactory trans = TransformerFactory.newInstance();
Transformer tr = trans.newTransformer();
tr.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/one.xml")));
} @Test
public void delet() throws Exception {//对XML文档就行添加节点
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。
DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。
Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。
//得到要删除的节点
Element brith = (Element) document.getElementsByTagName("birthday").item(0);//获取指定元素名
//得到要删除元素的父节点
Element partent = (Element) document.getElementsByTagName("student").item(0);//获取指定元素名
// partent.removeChild(brith);//使用remove方法删除节点
//创建节点
Element sex = document.createElement("sex");
sex.setTextContent("男");
//使用替换方法,替换节点
partent.replaceChild(sex, brith);
//把更新后的内存数写回去
TransformerFactory trans = TransformerFactory.newInstance();
Transformer tr = trans.newTransformer();
tr.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/one.xml")));
}
@Test
public void updata() throws Exception {//对XML文档就行添加节点
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。
DocumentBuilder documentBuilder = factory.newDocumentBuilder();//创建一个新的 DocumentBuilder 实例。
Document document = documentBuilder.parse("src/one.xml");//将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。
//得到要更新数据的节点
Element brith = (Element) document.getElementsByTagName("birthday").item(0);//获取指定元素名
brith.setTextContent("8月26日");//设置要更新是数据
//把更新后的内存数写回去
TransformerFactory trans = TransformerFactory.newInstance();
Transformer tr = trans.newTransformer();
tr.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/one.xml")));
}
}
使用dom解析器对xml文档内容进行增删查改的更多相关文章
- XML文档的简易增删查改
dom4j解析一.利用dom4j操作元素节点 1.查询第一本书的书名,并输出到控制台 2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元 3.删除第二本书的作者节点二.利用d ...
- Java DOM解析器 - 修改XML文档
这是我们需要修改的输入XML文件: 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="UTF-8&q ...
- Java DOM解析器 - 查询XML文档
这是需要我们查询的输入XML文件: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0"?> ...
- SAX解析和生成XML文档
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者: 永恒の_☆ 地址: http://blog.csdn.net/chenghui031 ...
- PHP中利用DOM和simplxml读取xml文档
实例 用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为 ./books.xml: <?xml version="1.0" encoding=" ...
- Dom4j解析语音数据XML文档(注意ArrayList多次添加对象,会导致覆盖之前的对象)
今天做的一个用dom4j解析声音文本的xml文档时,我用ArrayList来存储每一个Item的信息,要注意ArrayList多次添加对象,会导致覆盖之前的对象:解决方案是在最后将对象添加入Array ...
- Java对XML文档的增删改查
JAVA增删改查XML文件 最近总是需要进行xml的相关操作. 不免的要进行xml的读取修改等,于是上网搜索,加上自己的小改动,整合了下xml的常用操作. 读取XML配置文件 首先我们需要通过Do ...
- 6-3 如何解析简单的XML文档
元素节点.元素树 >>> from xml.etree.ElementTree import parse >>> help(parse) Help on funct ...
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
随机推荐
- wordpress改不了固定连接的解决办法
经常遇到更改了固定连接刷新没效果>>>>>>>废话不多说直接上步骤,有图有真相. 1,ftp删除根目录的这个文件夹 2,进入wp后台设置-固定连接—自定义结构 ...
- 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对
报错:当前标识(NT AUTHORITY\NETWORK SERVICE)没有对C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP. ...
- MySQL中创建用户与授权
参考地址:http://blog.csdn.net/gebitan505/article/details/51726649 一.创建用户(使用root用户登录进入mysql命令行) create us ...
- (转)Oracle 包(Package)
本文转载自:http://www.cnblogs.com/lovemoon714/archive/2012/02/29/2373695.html 1.为什么要使用包? 答:在一个大型项目中 ...
- jenkins获取测试报告展示的方法
1.写好了可以生成报告的python文件 2.在jenkins里下载 HTML Publisher plugin 插件 系统管理--管理插件--选择[可选插件]tab---搜索HTML Publis ...
- 解决时间控件input不能选择的问题
方法一: 方法二: 方法二参考: https://blog.csdn.net/huilan_same/article/details/52385401
- java数组复制的简单方法(一)
总结:主要是用a数组的长度等于b数组,然后a数组赋值给b数组,我不能想到这个办法,我还是不理解数组中length属性的含义 这里数组并没有正真复制过来,而是一个引用 package com.a; // ...
- java从键盘输入若干数,求其最大值,最小值,平均值。等等
总结:有一定基础的人,应该发现第一个程序可以运行,其实它有个致命的错误.有谁能一眼看出来呢?第二个程序是对的. 这个题目求最大值,最小值,平均值我不会求,不知道这个if判断放在类的外面还是main函数 ...
- 1108 Finding Average
题意:根据条件判定哪些数是合法的,哪些是不合法的.求其中合法的数的平均值. 思路:字符串处理函数,考虑到最后输出的时候需要控制格式,因此选用scanf()和printf().另外需要了解atof()函 ...
- python开发模块基础:collections模块¶miko模块
一,collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdic ...