使用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- ...
随机推荐
- bzoj 5093 [Lydsy1711月赛]图的价值——第二类斯特林数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5093 不要见到组合数就拆! 枚举每个点的度数,则答案为 \( n*\sum\limits_{ ...
- 让Eclipse的TomcatPlugin支持Tomcat 8.x
使用tomcat插件启动项目的优势: 1.TomcatPlugin是一个免重启的开发插件,原始的Servers方式启动tomcat项目,修改xxx.ftl 或者 xxx.jsp 文件后需要重启to ...
- 【转】学习使用Jmeter做压力测试(三)--数据库测试
JMeter可以做为Web服务器与浏览器之间的代理网关,以捕获浏览器的请求和Web服务器的响应,这样就可很容易的生成性能测试脚本.根据脚本,JMeter可通过线程组来模拟真实用户对Web服务器做压力测 ...
- 方格取数(dp)
方格取数 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 4[提交][状态][讨论版][命题人:quanxing] 题目描述 设有N×N的方格图,我们在其中的某些方格中填入正整 ...
- 圆周率的现代计算机求法(C语言) Lebal:research
C语言求圆周率π 公式法1 #include <stdio.h> #include <math.h> int main(){ float term,result=1; int ...
- 关于 NULL的坑
有如下的表: select * from testtable where name in ('name'): 结果是第一条: select * from testtable where name n ...
- 执行CRUD总结
- QR 码的位置检测符
QR码的位置检测符由三个同心正方形叠加而成.分别为: 7*7 modules的黑色正方形: 5*5 modules的白色正方形 : 3*3modules的黑色正方形. 三个用于定位检测的“回”形符号应 ...
- (转)css 背景色渐变兼容写法
css3:linear-gradient 比如:黑色渐变到白色,代码如下: .gradient{ background: -moz-linear-gradient(top, #000000 0%, # ...
- 一个简单的AXIS远程调用Web Service示例
我们通常都将编写好的Web Service发布在Tomcat或者其他应用服务器上,然后通过浏览器调用该Web Service,返回规范的XML文件.但是如果我们不通过浏览器调用,而是通过客户端程序调用 ...