直接添代码:

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文档内容进行增删查改的更多相关文章

  1. XML文档的简易增删查改

    dom4j解析一.利用dom4j操作元素节点 1.查询第一本书的书名,并输出到控制台 2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元 3.删除第二本书的作者节点二.利用d ...

  2. Java DOM解析器 - 修改XML文档

    这是我们需要修改的输入XML文件: 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="UTF-8&q ...

  3. 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"?> ...

  4. SAX解析和生成XML文档

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者: 永恒の_☆ 地址: http://blog.csdn.net/chenghui031 ...

  5. PHP中利用DOM和simplxml读取xml文档

    实例  用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为 ./books.xml: <?xml version="1.0" encoding=" ...

  6. Dom4j解析语音数据XML文档(注意ArrayList多次添加对象,会导致覆盖之前的对象)

    今天做的一个用dom4j解析声音文本的xml文档时,我用ArrayList来存储每一个Item的信息,要注意ArrayList多次添加对象,会导致覆盖之前的对象:解决方案是在最后将对象添加入Array ...

  7. Java对XML文档的增删改查

    JAVA增删改查XML文件   最近总是需要进行xml的相关操作. 不免的要进行xml的读取修改等,于是上网搜索,加上自己的小改动,整合了下xml的常用操作. 读取XML配置文件 首先我们需要通过Do ...

  8. 6-3 如何解析简单的XML文档

    元素节点.元素树 >>> from xml.etree.ElementTree import parse >>> help(parse) Help on funct ...

  9. 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

    众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...

随机推荐

  1. bzoj 4556 字符串 —— 后缀数组+主席树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4556 就是找一个 rk 在一段区间内的前驱和后继: 由于 LCP 还有区间长度的限制,所以可 ...

  2. flyplane

    看到别人的一个简单制作打飞机的demo,先保存下来有空可以研究一下: <!DOCTYPE html> <html lang="en"> <head&g ...

  3. Indy10收发Hotmail邮件

    hotmail开放了pop3,可以使用客户端工具收取邮件了. POP 服务器: pop3.live.com (端口 995)需要 POP SSL?: 是的用户名: Windows Live ID, 比 ...

  4. apache通过.htaccess(rewrite)判断手机电脑跳转-手机用户重定向到手机版

    自动判断.重定向的办法也有几种: 使用网站构建的程序(例如PHP)来判断.重定向:使用服务器上的Web服务(例如Apache)来判断.重定向. 在Apache中设置重定向有两个办法: 在网站的http ...

  5. linux 查看系统信息和安装哪些软件的命令

    https://www.cnblogs.com/wangkongming/p/4531341.html 查看系统磁盘硬盘占用率 https://blog.csdn.net/aaashen/articl ...

  6. php跨域问题

    http://www.cnblogs.com/xiezn/p/5651093.html

  7. 【转】学习使用Jmeter做压力测试(三)--数据库测试

    JMeter可以做为Web服务器与浏览器之间的代理网关,以捕获浏览器的请求和Web服务器的响应,这样就可很容易的生成性能测试脚本.根据脚本,JMeter可通过线程组来模拟真实用户对Web服务器做压力测 ...

  8. Kata 架构

    原文:https://github.com/kata-containers/documentation/blob/master/architecture.md (欢迎纠错) Kata-runtime ...

  9. win2003能支持的最高python版本为3.3.5版本

    https://www.python.org/downloads/windows/

  10. WP8.1通过StreamSocket连接C++服务器

    注:当服务端和手机模拟器运行在一台机器时,会有奇怪错误.将服务端放在其它机器上更改客户端连接地址,运行正常.或者直接用本机modern调试也可以. 实例化一个对象 StreamSocket clien ...