对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")));
    }
}
时间: 2024-10-01 06:52:21

对xml文档内容进行增删查改的相关文章

C#操作xml文档增删改查(Linq to XML)

1.创建xml 1 public static void CreateXmlDoc() 2 { 3 XElement myDoc = 4 new XElement("Customers", 5 new XElement("Customer", new XAttribute("ID", "1"), 6 new XElement("Usename", "Rock Zed"), 7 new X

java操作xml文档

目前最常用的XML解析技术是DOM和SAX. DOM是基于XML的树结构来完成解析的,适用于多次访问的XML文档,但是DOM解析比较消耗资源:而SAX是基于事件解析,适用于大数据量的XML文档,占用资源少,内存消耗小. DOM是文档对象模型(Document Object Model) 首先DOM会将XML文档映射成一颗倒挂的树,在这棵树中,每个节点都是以节点对象的形式存在的. 我们通过操作这些对象就可以完成XML文件的读写任务了. 我们可以直接根据节点的名称或属性查找该节点对象,也可以根据一个

Java对XML文档的解析

1. DOM解析 DOM的全称是Document Object Model,也即文档对象模型.DOM解析会将XML文档以对象树的方式存入内存,因此,DOM解析内存消耗巨大.当然由于DOM解析将XML以节点树的方式调入内存,所以对文档进行增删改查(crud)比较方便.DOM分析器把整个XML文档转化成DOM树放在了内存中,因此,当文档比较大或者结构比较复杂时,对内存的需求就比较高.而且,对于结构复杂的树的遍历也是一项耗时的操作.所以,DOM分析器对机器性能的要求比较高,实现效率不十分理想. ---

.Net中使用xsd验证xml文档

在.NET中使用XSD可以方便的验证一个XML文档是否符合规范.这里的XSD本质上是一个xml文件,XSD相当于数据库中的表结构或者C#语言中的一个抽象类,它规定了被验证的目标xml的结构,如目标xml具有哪些节点,每个节点的顺序关系,每个节点的数据类型,每个节点的出现次数等信息. .NET中通过XmlReader和XmlReaderSettrings类可以方便的对XML进行验证,示例代码如下: 1         static void Main(string[] args) 2 { 3 //

C# 操作XML文档 使用XmlDocument类方法

W3C制定了XML DOM标准.很多编程语言中多提供了支持W3C XML DOM标准的API.我在之前的文章中介绍过如何使用Javascript对XML文档进行加载与查询.在本文中,我来介绍一下.Net中的XmlDocument类.它支持并扩展了W3C XML DOM标准.它将整个XML文档都先装载进内存中,然后再对XML文档进行操作,所以如果XML文档内容过大,不建议使用XmlDocument类,因为会消耗过多内存.对于很大的XML文档,可以使用XmlReader类来读取.因为XmlReade

用javabean封装xml文档数据

//book.xml <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> <la

把XML文档中的每一本书封装到一个book对象,并把多个book对象放到一个list集合当中返回

1 package sax; 2 3 import java.awt.print.Book; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import javax.xml.parsers.ParserConfigurationException; 9 import javax.xml.parsers.SAXParser; 10 import javax.xml.p

关于XML文档的讲解

1        XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用.同时,在2004年2月W3C又发布了1.0版本的第三版.我们要学习的还是1.0版本!!! 1.2 XML的应用场景 保存关系型数

XML文档类型定义---DTD文档

DTD的作用 XML文档是一种元标记语言,即一种定义标记语言的语言.在XML中可以创建新的标记语言,这些新的标记语言(也叫标记集)要通过文档类型定义(Document Type Definitions,DTD)来定义.DTD文档是这些新的标记语言的法律性文档.如果XML文档的语法符,DTD的定义和规定,那么就称为一个合法的XML文档,否则就是非法的XML文档.合法的XML文档在实际应用中的地位很重要,因为只有合法的XML文档才能被应用软件有效地处理. DTD定义了文档的逻辑结构,规定了文档中所使