使用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- ...
随机推荐
- linux下修改ip地址
1.more /etc/sysconfig/network-scripts/ifcfg-eth0 2.ifconfig eth0 192.168.1.211 netmask 255.255.255. ...
- JAVA反射调用方法
1.用户类 package com.lf.entity; import com.lf.annotation.SetProperty; import com.lf.annotation.SetTable ...
- 【转】数据库范式(1NF 2NF 3NF BCNF)
范式判断流程图 1. 四种范式之间关系 2.第二范式.第三范式.BCNF区别: 2NF:非主键列和主键列之间,是完全依赖于主键,还是依赖于主键的一部分(只依赖某个主键): 3NF:非主键列之间,不存在 ...
- php通过存储过程传入汉字参数并写入数据库
写入数据库,汉字为???样式的乱码,后根据网上介绍的方法,参数前加N,数据库汉字内容变成空白. 解决方法,在PHP中先转为base64,再在mysql中base64解码,前提先保证mysql中有bas ...
- JAVA中常见异常类
1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对 ...
- FIREDAC的心得
FIREDAC与UNIDAC有些不同 但大体上是相同的 以下是一些随手笔记: FieldCount是当前FDQuery2所在行里面有多少列 一般用FieldList[X]来代表第几列 str:=FDQ ...
- PMODB GT202 WIFI的使用
pHTTPSession = (P_HTTP_SESSION)malloc(ALIGN(sizeof(HTTP_SESSION))) PMODA/PMODB都可做WIFI使用,现介绍PMODB WIF ...
- Oracle 数据库备份还原(Expdp/impdp)记录
最近公司将原数据库服务器切换.之前没整过这块,也是一堆的度娘.经过不停的摸索,终于成功了.现在将这份艰辛记录下来,方便自己以后查阅的同时,方便有类似需求的同学参考. 我们此次切换共分:ERP.LOS. ...
- PCIE接口的说明
https://blog.csdn.net/u013253075/article/details/80835489
- 杂项:UN-APP
ylbtech-杂项:APP 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返回顶部 10 ...