java使用DOM对XML文档进行增删改查操作实例代码

本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示。

源代码:

package com.zc.homeWork18;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XMLWriter {

  private static String xmlPath = "src\\com\\zc\\homeWork18\\MyXml.xml";

  public static void getFamilyMemebers() {

  /*
     * 创建文件工厂实例
     */
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    // 如果创建的解析器在解析XML文档时必须删除元素内容中的空格,则为true,否则为false
    dbf.setIgnoringElementContentWhitespace(true);

    try {
      /*
       * 创建文件对象
       */
      DocumentBuilder db = dbf.newDocumentBuilder();// 创建解析器,解析XML文档
      Document doc = db.parse(xmlPath); // 使用dom解析xml文件

      /*
       * 历遍列表,进行XML文件的数据提取
       */
      // 根据节点名称来获取所有相关的节点
      NodeList sonlist = doc.getElementsByTagName("son");
      for (int i = 0; i < sonlist.getLength(); i++) // 循环处理对象
      {
        // 节点属性的处理
        Element son = (Element) sonlist.item(i);
        // 循环节点son内的所有子节点
        for (Node node = son.getFirstChild(); node != null; node = node
            .getNextSibling()) {
          // 判断是否为元素节点
          if (node.getNodeType() == Node.ELEMENT_NODE) {
            String name = node.getNodeName();
            String value = node.getFirstChild().getNodeValue();
            System.out.println(name + " : " + value);
          }
        }
      }
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }

  // 修改
  public static void modifySon() {
    // 创建文件工厂实例
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(true);
    try {
      // 从XML文档中获取DOM文档实例
      DocumentBuilder db = dbf.newDocumentBuilder();
      // 获取Document对象
      Document xmldoc = db.parse(xmlPath);

      // 获取根节点
      Element root = xmldoc.getDocumentElement();
      // 定位id为001的节点
      Element per = (Element) selectSingleNode("/father/son[@id='001']",
          root);
      // 将age节点的内容更改为28
      per.getElementsByTagName("age").item(0).setTextContent("28");
      // 保存
      TransformerFactory factory = TransformerFactory.newInstance();
      Transformer former = factory.newTransformer();
      former.transform(new DOMSource(xmldoc), new StreamResult(new File(
          xmlPath)));
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }

  // 获取目标节点,进行删除,最后保存
  public static void discardSon() {

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(true);

    try {

      DocumentBuilder db = dbf.newDocumentBuilder();
      Document xmldoc = db.parse(xmlPath);
      // 获取根节点
      Element root = xmldoc.getDocumentElement();
      // 定位根节点中的id=002的节点
      Element son = (Element) selectSingleNode("/father/son[@id='002']",
          root);
      // 删除该节点
      root.removeChild(son);
      // 保存
      TransformerFactory factory = TransformerFactory.newInstance();
      Transformer former = factory.newTransformer();
      former.transform(new DOMSource(xmldoc), new StreamResult(new File(
          xmlPath)));

    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }

  // 新增节点
  public static void createSon() {
    // 创建文件工厂实例
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(false);

    try {

      DocumentBuilder db = dbf.newDocumentBuilder();
      // 创建Document对象
      Document xmldoc = db.parse(xmlPath);
      // 获取根节点
      Element root = xmldoc.getDocumentElement();
      // 创建节点son,设置对应的id为004
      Element son = xmldoc.createElement("son");
      son.setAttribute("id", "004");
      // 创建节点name
      Element name = xmldoc.createElement("name");
      name.setTextContent("小儿子");
      son.appendChild(name);
      // 创建节点age
      Element age = xmldoc.createElement("age");
      age.setTextContent("0");
      son.appendChild(age);
      // 把son添加到根节点中
      root.appendChild(son);
      // 保存
      TransformerFactory factory = TransformerFactory.newInstance();
      Transformer former = factory.newTransformer();
      former.transform(new DOMSource(xmldoc), new StreamResult(new File(
          xmlPath)));

    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }

  // 修改节点信息
  public static Node selectSingleNode(String express, Element source) {
    Node result = null;
    //创建XPath工厂
    XPathFactory xpathFactory = XPathFactory.newInstance();
    //创建XPath对象
    XPath xpath = xpathFactory.newXPath();
    try {
      result = (Node) xpath.evaluate(express, source, XPathConstants.NODE);
      System.out.println(result);
    } catch (XPathExpressionException e) {
      System.out.println(e.getMessage());
    }

    return result;
  }

  // 打印
  public static void main(String[] args) {

    getFamilyMemebers();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    modifySon();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    System.out.println("修改数据");
    getFamilyMemebers();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    discardSon();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    System.out.println("删除数据");
    getFamilyMemebers();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    createSon();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    System.out.println("添加数据");
    getFamilyMemebers();
  }
}

XML文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<father>
  <son id="001">
    <name>老大</name>
    <age>20</age>
  </son>
  <son id="002">
    <name>老二</name>
    <age>18</age>
  </son>
  <son id="003">
    <name>老三</name>
    <age>13</age>
  </son>

</father>

总结

以上就是本文关于java使用DOM对XML文档进行增删改查操作实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

您可能感兴趣的文章:

  • java基于dom4j包实现对XML解析的方法
  • Java 利用dom方式读取、创建xml详解及实例代码
  • java中利用Dom4j解析和生成XML文档
  • Javaweb中使用Jdom解析xml的方法
  • Java全面解析XML格式串(JDOM解析)
  • Java中使用DOM和SAX解析XML文件的方法示例
  • java使用Jdom实现xml文件写入操作实例
  • Java使用Jdom读取xml解析实例
(0)

相关推荐

  • Java全面解析XML格式串(JDOM解析)

    Java全面解析XML格式串(JDOM解析) import java.io.IOException; import java.io.StringReader; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.Namespace; import org.jdom.input.SAXBuilder; impo

  • java中利用Dom4j解析和生成XML文档

    一.前言 dom4j是一套非常优秀的Java开源api,主要用于读写xml文档,具有性能优异.功能强大.和非常方便使用的特点.   另外xml经常用于数据交换的载体,像调用webservice传递的参数,以及数据做同步操作等等,   所以使用dom4j解析xml是非常有必要的. 二.准备条件 dom4j.jar 下载地址:http://sourceforge.net/projects/dom4j/ 三.使用Dom4j实战 1.解析xml文档 实现思路: <1>根据读取的xml路径,传递给SAX

  • Java中使用DOM和SAX解析XML文件的方法示例

    dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP. dom4j的使用 下载了dom4j项目之后,解压缩,将其jar包(我的当前版本叫做dom4j-1.6.1.jar)加入class path下面. (Properties->Java Build Pa

  • java基于dom4j包实现对XML解析的方法

    本文实例讲述了java基于dom4j包实现对XML解析的方法.分享给大家供大家参考,具体如下: 本例中的xml文件内容如下: <?xml version = "1.0" encoding="UTF-8"?> <!-- Copyright 难免有错 这是注释--> <自定义的> <!-- iloveyou --> <你喜欢的名字就好> <who a = "i"></who

  • Java 利用dom方式读取、创建xml详解及实例代码

    Java 利用dom方式读取.创建xml详解 1.创建一个接口 XmlInterface.Java public interface XmlInterface { /** * 建立XML文档 * @param fileName 文件全路径名称 */ public void createXml(String fileName); /** * 解析XML文档 * @param fileName 文件全路径名称 */ public void parserXml(String fileName); }

  • Java使用Jdom读取xml解析实例

    本文实例讲述了Java使用Jdom读取xml解析.分享给大家供大家参考,具体如下: package com.yanek.demo.xml.test; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMExcep

  • Javaweb中使用Jdom解析xml的方法

    一.前言 Jdom是什么? Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作.它是直接为java编程服务,利用java语言的特性(方法重载,集合),把SAX和DOM的功能结合起来,尽可能的把原来解析xml变得简单,我们使用Jdom解析xml会是一件轻松的事情. Jdom的优点: 1.Jdom专用于java技术,比Dom应用占用更少内存. 2.Jdom提供更加简单和逻辑性访问xml信息的基础方法 3.除xml文件外,Jdom还可以访问其他的数

  • java使用Jdom实现xml文件写入操作实例

    本文实例讲述了java使用Jdom实现xml文件写入操作的方法.分享给大家供大家参考,具体如下: package com.yanek.demo.xml.test; import java.io.File; import java.io.FileWriter; import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import o

  • java使用DOM对XML文档进行增删改查操作实例代码

    本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.tr

  • C#实现XML文档的增删改查功能示例

    本文实例讲述了C#实现XML文档的增删改查功能.分享给大家供大家参考,具体如下: 1. 创建实例XML文件(Books.xml) <?xml version="1.0" encoding="iso-8859-1"?> <bookstore> <book id="1" category="COOKING"> <title lang="en">Everyday I

  • java连接mongoDB并进行增删改查操作实例详解

    本文实例讲述了java连接mongoDB并进行增删改查操作.分享给大家供大家参考,具体如下: 1.安装 MongoDB JDBC驱动程序 在java中使用mongoDB之前,首先需要拥有java连接mongoDB的第三方驱动包(jar包) 1)maven项目可通过在pom.xml中添加依赖 <dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-ja

  • java 数据库连接与增删改查操作实例详解

    本文实例讲述了java 数据库连接与增删改查操作.分享给大家供大家参考,具体如下: 1.设置数据库的基本配置信息 package mysql; //数据库配置资源连接 public final class DbConfig { //数据库资源 指定所使用的数据库类型 地址 端口 数据库名称 编码格式 public final static String dbUrl = "jdbc:mysql://localhost:3306/database_name?useUnicode=true&c

  • Java语言实现对MySql数据库中数据的增删改查操作的代码

    简单说操作的步骤: 1.连接数据库 2.将SQL语句发送到数据库 3.执行SQL语句 这里举个例子: 在一个数据库中有个students表,表中有学号(Id),姓名(Name),性别(Sex),地址(Address),电话(Phone),专业(Dept). 这里把这个表写成一个学生信息类(Info_student) (请先确保看了例子说明,不然代码有的地方可能看不明白) 要实现操纵我们首先得连接数据库,因为每个操作都要进行连接操作,所以我们直接把连接的操作封装在一个类中,需要连接的时候直接调用可

  • java实现单链表增删改查的实例代码详解

    package 数据结构算法.链表; /* *定义节点 * 链表由节点构成 */ public class Node<E> { private E e; //数据data private Node<E> next; //指向下一个节点 public Node() { } public Node(E e) { this.e = e; } public Node<E> getNext() { return next; } public void setNext(Node&l

  • Java编程中更新XML文档的常用方法

    本文简要的讨论了Java语言编程中更新XML文档的四种常用方法,并且分析这四种方法的优劣.其次,本文还对如何控制Java程序输出的XML文档的格式做了展开论述. JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口.JAXP支持DOM.SAX.XSLT等标准.为了增强JAXP使用上的灵活性,开发者特别为JAXP设计了一个Pluggability Layer,在Pluggability Layer的支持之下,

  • PHP基于DOM创建xml文档的方法示例

    本文实例讲述了PHP基于DOM创建xml文档的方法.分享给大家供大家参考,具体如下: DOM创建xml文档 用dom创建如下文档: <booklist> <book id="1"> <title>天龙八部</title> <author>金庸</author> <content> <![CDATA[ 天龙八部是金庸写的一本武侠小说,非常好看! ]]> </content> <

  • java + dom4j.jar提取xml文档内容

    本文实例为大家分享了java + dom4j.jar提取xml文档内容的具体代码,供大家参考,具体内容如下 资源下载页:点击下载 本例程主要借助几个遍历的操作对xml格式下的内容进行提取,操作不是最优的方法,主要是练习使用几个遍历操作. xml格式文档内容: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nitf SYSTEM "http://www.nitf.org/IPTC/NITF

  • c#对XML文档的创建与增删改查的示例代码

    一.创建的第一种方式 //1.创建一个XML文档 XmlDocument doc = new XmlDocument(); //2.创建第一行描述信息 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null); //3.将创建的第一行描述信息添加到文档中 doc.AppendChild(dec); //4.给文档添加根节点 XmlElement Books = doc.CreateElem

随机推荐