java使用DOM4J对XML文件进行增删改查操作

本文实例为大家分享了java使用DOM4J对XML文件进行增删改查操作的具体代码,供大家参考,具体内容如下

源代码:

DOM4j.java

package com.zc.homeWork19;

import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import com.zc.homeWork19.Book;

public class DOM4j {
  public static void main(String args[]) throws Exception {
    /**
     * 第一步,得到document对象。
     */
    Document document = getDocument();

    /**
     * 第二步,修改得到的document对象
     */

    /**
     * 首先,读取功能
     */
    List<Book> books = readAllElementsFromXMLDocument(document);
    traverseBooks(books);

    /**
     * 其次,修改功能 修改内容:将id为b002的元素的title改为Java Core,Price改为100.01
     */
    ModifyInformationOfXMLDocument(document);

     /**
     * 再者:实现删除功能 删除内容:删除掉id为book1的元素内容。
     */
     deleteInformationOfXMLDocument(document);

     /**
     * 最后:实现添加i新元素功能 添加内容:id为book3,title内容为:凤姐玉照,price内容为10000.00
     */
     addNewBookToXMLDocument(document);

     /**
     * 第三步:将得到的document对象持久化保存到硬盘(XML)
     */
     writeToNewXMLDocument(document);
  }

  /**
   * 实现了添加新节点:book的功能
   *
   * @param document
   */
  private static void addNewBookToXMLDocument(Document document) {
    Element root = document.getRootElement();
    Element newBook = root.addElement("book");
    newBook.addAttribute("id", "book3");
    Element title = newBook.addElement("title");
    title.setText("凤姐玉照");
    Element price = newBook.addElement("price");
    price.setText("10000.01");
  }

  /**
   * 该方法实现了使用dom4j的删除元素的功能
   *
   * @param document
   */
  private static void deleteInformationOfXMLDocument(Document document) {
    Element root = document.getRootElement();
    for (Iterator it = root.elementIterator(); it.hasNext();) {
      Element book = (Element) it.next();
      String id = book.attributeValue("id");
      if ("book1".equals(id)) {
        Element parent = book.getParent();
        parent.remove(book);
      }
    }
  }

  /**
   * 该方法的作用是修改document中的内容 将id为b002的元素的title改为Java Core,Price改为100.01
   *
   * @param document
   */
  private static void ModifyInformationOfXMLDocument(Document document) {
    Element root = document.getRootElement();
    List books = root.elements();
    for (int i = 0; i < books.size(); i++) {

      Element book = (Element) books.get(i);
      if ("book2".equals(book.attributeValue("id"))) {

        for (Iterator it = book.elementIterator(); it.hasNext();) {
          Element node = (Element) it.next();
          String type = node.getName();
          if ("title".equals(type)) {
            node.setText("JAVA Core");
          }
          if ("price".equals(type)) {
            node.setText("100.01");
          }
        }
      }
    }

    try {
      writeToNewXMLDocument(document);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  /**
   * 遍历集合
   *
   * @param books
   */
  private static void traverseBooks(List<Book> books) {
    for (Iterator<Book> iterator = books.iterator(); iterator.hasNext();) {
      Book book = iterator.next();
      System.out.println(book);
    }
  }

  /**
   * 该方法实现了对xml文档的读取功能
   *
   * @param document
   * @return
   */
  private static List<Book> readAllElementsFromXMLDocument(Document document) {
    List<Book> books = new ArrayList<Book>();
    Element root = document.getRootElement();
    List list = root.elements();
    for (int i = 0; i < list.size(); i++) {
      Element book = (Element) list.get(i);
      Book b = new Book();
      String id = book.attributeValue("id");
      List ll = book.elements();
      b.setId(id);
      System.out.println(id);
      for (int j = 0; j < ll.size(); j++) {
        Element element = (Element) ll.get(j);
        if ("title".equals(element.getName())) {
          String title = element.getText();
          b.setTitle(title);
          System.out.println(title);
        }
        if ("price".equals(element.getName())) {
          String price = element.getText();
          double p = Double.parseDouble(price);
          b.setPrice(p);
          System.out.println(price);
        }
      }
      books.add(b);
    }
    return books;
  }

  /**
   * 通过document对象将内存中的dom树保存到新的xml文档。
   *
   * @param document
   * @throws Exception
   */
  private static void writeToNewXMLDocument(Document document)
      throws Exception {

    XMLWriter writer = new XMLWriter(new FileWriter(
        "src/com/zc/homeWork19/newbooks.xml"));
    writer.write(document);
    writer.close();
  }

  /**
   * 该方法用于得到document对象。
   *
   * @return
   * @throws Exception
   */
  private static Document getDocument() throws Exception {
    SAXReader sr = new SAXReader();
    Document document = sr.read("src\\books.xml");
    return document;
  }
}

Book.java

package com.zc.homeWork19;

public class Book {
  public String title;
  public double price;
  public String id;

  public String getTitle() {
    return title;
  }

  public void setTitle(String title) {
    this.title = title;
  }

  public double getPrice() {
    return price;
  }

  public void setPrice(double price) {
    this.price = price;
  }

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public String toString() {
    return "图书ISBN为:" + id + "  书名为:" + title + "  价格为:" + price;
  }
}

book.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
  <book id="book1">
    <title>JAVA编程思想</title>
    <price>80.00</price>
  </book>
  <book id="book2">
    <title>JAVA 编程理论</title>
    <price>100.00</price>
  </book>
</books>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java解析XML Node与Element的区别(推荐)

    对Element和Node有困惑是因为对xml整个结构不了解,以下作为一个简要概述: 以下图为w3c.org网站的xml文档树图: 从上图可以看出,一个xml文档由元素节点,属性节点,文本节点构成,其中bookstore被称为文档元素或根元素,也是一个元素节点 XML DOM是这样规定一个节点的 XML 文档中的每个成分都是一个节点. 整个文档是一个文档节点    即Document节点.在java中Document接口是继承于Node接口,表示整个XML 文档 每个 XML 标签是一个元素节点

  • Java通过XPath获取XML文件中符合特定条件的节点

    在Java解析XML文件的过程中,有时需要获取符合某些特定条件的节点,以下是实现代码. import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.eclipse.swt.widgets.Shell; import org.ec

  • 详解Java数字签名提供XML安全

    用Java数字签名提供XML安全 众所周知,XML在产品和项目开发中起着非常重要的作用.通过XML文档可以获取很多信息,还可以使用XML文件进行CRUD(增加.查询.更新和 删除)操作.然而值得注意的是,我们如何确保XML中的数据是来自经过认证的可信和可靠的来源.关于XML文件数据的可靠性和真实性存在很多问题.通常的 情况是,开发者直接处理XML文件而不去考虑数据的可靠性.有一些情况提出了上面的所有问题.现实生活中,每当我们从邮局收到一封信件时我们如何确定这封 信是来自我们的朋友?依据可能是他/

  • java将XML文档转换成json格式数据的示例

    本文介绍了java将XML文档转换成json格式数据的示例,分享给大家,具体如下: 功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具包; 2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 程序源代码 package com.xxx.open.pay.util; import com.alibaba.fastjson.JSONObject; import org.jdom2.Element; imp

  • Java对象的XML序列化与反序列化实例解析

    上一篇文章我们介绍了java实现的各种排序算法代码示例,本文我们看看Java对象的xml序列化与反序列化的相关内容,具体如下. XML是一种标准的数据交换规范,可以方便地用于在应用之间交换各类数据.如果能在Java对象和XML文档之间建立某种映射,例如Java对象的XML序列化和反序列化,那么就可以使Java的对象方便地与其他应用进行交换. java.beans包里面有两个类XMLEncoder和Decoder,分别用于将符合JabaBeans规范的Java对象以XML方式序列化和反序列化.以下

  • java 生成xml并转为字符串的方法

    如下所示: import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import javax.xml.transform.TransformerFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.

  • java实现简单解析XML文件功能示例

    本文实例讲述了java实现简单解析XML文件功能.分享给大家供大家参考,具体如下: package demo; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;

  • Java对XML文件增删改查操作示例

    本文实例讲述了Java对XML文件增删改查操作.分享给大家供大家参考,具体如下: xml文件: <?xml version="1.0" encoding="UTF-8"?> <books> <book> <name>哈里波特</name> <price>10</price> <memo>这是一本很好看的书.</memo> </book> <b

  • java中使用dom4j解析XML文件的方法教程

    前言 dom4j是一个java的XML api,性能优异.功能强大.易于使用.以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4j解析xml的具体操作.下面话不多说了,来一起看看详细的介绍吧 官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回List<Stude

  • Java操作XML工具类XmlUtil详解

    本文实例为大家分享了Java操作XML工具类的具体代码,供大家参考,具体内容如下 一.代码 public class XmlUtil { /** * 将XML文件输出到指定的路径 * * @param doc * @param fileName * @throws Exception */ public static void outputXml(Document doc, String fileName) throws Exception { TransformerFactory tf = T

随机推荐