使用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- ...
随机推荐
- Python 函数 -next()
next() next() 返回迭代器的下一个项目. iterator - 可迭代对象. default - 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 St ...
- php://input解决APP发送图片问题
今天公司要求用APP发送一个图片到PHP程序接收并保存起来,而且中间还需要很多参数! 以前没有做过APP和PHP交互,这次算是一个挑战吧(对一个没有人指导实习生来说) 1.APP发1.jpg,而且带有 ...
- bzoj 1499 [NOI2005]瑰丽华尔兹——单调队列优化dp
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1499 简单的单调队列优化dp.(然而当时却WA得不行.今天总算填了坑) 注意滚动数组赋初值应 ...
- java冒泡排序算法例子
总结:运行显示数组下标越界说明,数组长度a.length.表示数组的长度,但索引值是要减一的.勿忘 package com.c2; //冒泡排序 //从小到大的顺序排列 public class MA ...
- I/O通信模型(BIO,NIO,AIO)
一.传统的BIO 网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请 ...
- Linux学习笔记 -- 目录与文件的管理
目录结构 Linux的目录结构为树状结构,最顶级的目录为根目录 “/”. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 在开始本教程前我们需要先知道什么是. 绝对路径与相对路径 绝 ...
- python学习(三) 使用字符串
第三章 使用字符串 ...
- 多路复用IO
多路复用IO(IO multiplexing) IO multiplexing这个词可能有点陌生,但是如果我说select/epoll,大概就都能明白了.有些地方也称这种IO方式为事件驱动IO (ev ...
- tomcat注册成windows系统服务
一.下载Tomcat Tomcat可以从http://tomcat.apache.org/网站下载,选择任意版本,在 Binary Distributions 下的zip包既是. 二.配置Tomcat ...
- 执行CRUD总结