`
conkeyn
  • 浏览: 1522983 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

使用dom4j修改xml元素

阅读更多

预先编写一个xml文件books.xml ,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<books>
	<!--This is a test for dom4j, jakoes, 2007.7.19-->
	<book show="yes" url="lucene.net">
		<title id="456">Lucene 学习</title>
	</book>
	<book show="yes" url="dom4j.com">
		<title id="123">Dom4j Tutorials</title>
	</book>
	<book show="no" url="spring.org">
		<title id="789">Spring in Action</title>
	</book>
	<owner>O'Reilly</owner>
</books>  

 修改books.xml文件的java代码XmlModify.java

/**
 * XmlModify.java 
 * 2011-2-21 下午03:07:14
 */
package com.gbit.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * @author linzq
 * 
 */
public class XmlModify
{

    /**
     * @param args
     * @throws DocumentException
     * @throws IOException
     */
    public static void main(String[] args) throws DocumentException,
            IOException
    {
        String path = XmlModify.class.getResource(".").getFile().toString();
        SAXReader reader = new SAXReader();
        // 设置读取文件内容的编码
        reader.setEncoding("GBK");
        Document doc = reader.read(path + "books.xml");
        // System.out.println(doc);

        // 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no
        // 先用xpath查找对象
        // 根据试用,根节点books的xpath路径要加/或不加都可以。
        List<Attribute> attrList = doc.selectNodes("books/book/@show");
        Iterator<Attribute> i = attrList.iterator();
        while (i.hasNext())
        {
            Attribute attribute = i.next();
            if (attribute.getValue().equalsIgnoreCase("yes"))
            {
                attribute.setValue("no");
            }
        }

        // 修改内容之二: 把owner项内容改为Tshinghua
        // 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个属性type
        List<Element> eleList = doc.selectNodes("owner");
        Iterator<Element> eleIter = eleList.iterator();
        if (eleIter.hasNext())
        {
            Element ownerElement = eleIter.next();
            ownerElement.setText("Tshinghua");
            Element dateElement = ownerElement.addElement("date");
            DateFormat df = SimpleDateFormat.getDateInstance();
            dateElement.setText(df.format(new Date()));
            ownerElement.addAttribute("type", "Gregorian calendar");
        }

        // 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点
        eleList = doc.selectNodes("books/book");
        eleIter = eleList.iterator();
        while (eleIter.hasNext())
        {
            Element element = eleIter.next();
            Iterator<Element> titleIter = element.elementIterator("title");
            while (titleIter.hasNext())
            {
                Element title = titleIter.next();
                if (title.getText().equalsIgnoreCase("Dom4j Tutorials"))
                {
                    element.remove(title);
                }
            }
        }
        OutputFormat format = OutputFormat.createPrettyPrint();
        // 利用格式化类对编码进行设置
        format.setEncoding("GBK");
        FileOutputStream output = new FileOutputStream(new File(path +
                "books1.xml"));
        XMLWriter writer = new XMLWriter(output, format);
        writer.write(doc);
        writer.flush();
        writer.close();
    }
}

 

 

 

分享到:
评论

相关推荐

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    - XPath支持:可以方便地使用XPath表达式查找和操作XML元素。 - 轻量级:DOM4J不依赖大型库,适合各种项目。 - 性能良好:相比于传统的DOM API,DOM4J在内存占用和处理速度上有优势。 在实际开发中,DOM4J的强大...

    使用Maven管理项目,实现DOM4j操作XML文件

    在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是Apache软件基金会的一个项目,它通过定义项目对象模型(Project Object Model,POM)来管理项目的构建、...

    使用dom4j操作xml

    ### 使用dom4j操作XML详解 #### 一、DOM4j简介与配置 **DOM4j** 是一款专为Java平台设计的开源XML解析处理工具。它的设计充分考虑了性能和易用性,同时提供了对DOM、SAX及JAXP等标准的支持,因此非常适合进行复杂...

    dom4j解析xml详解

    DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...

    Dom4J生成XML的完整方法希望大家能用到

    Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...

    dom4j操作xml

    DOM4J通过创建一个对象模型来表示XML文档,使得我们可以像操作Java对象一样操作XML元素。 1. **XML解析**: - 使用`DocumentBuilderFactory`和`DocumentBuilder`类可以将XML字符串转换为`Document`对象,这是DOM4J...

    XSD使用dom4j校验XML

    DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了XML的读取、写入、解析和操作的能力。本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解...

    dom4j读写xml文档实例

    它提供了简单且高效的API来读取、写入、修改以及操作XML。在这个实例中,我们将深入理解DOM4J库如何帮助我们处理XML文档,并通过实际操作来熟悉其核心功能。 XML(eXtensible Markup Language)是一种用于标记数据...

    dom4j解析xml文件的压缩包

    为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...

    使用dom4j解析XML

    相比W3C DOM API,dom4j的优势在于其内置的XPath支持,允许更方便地定位和操作XML文档中的节点。 **预先设置** 在使用dom4j之前,首先需要获取并配置dom4j库。dom4j的jar文件可以从其官方网站(http://dom4j.org)...

    dom4j 解析(读取) xml 节点数据

    在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...

    dom4j解析xml文件(增删改查)

    在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...

    dom4j解析xml

    DOM4J提供了几个核心类和接口来帮助我们操作XML文档: 1. **Document**: 表示整个XML文档。 2. **Element**: 表示XML文档中的元素。 3. **Attribute**: 表示元素的属性。 4. **Text**: 表示元素中的文本内容。 5. *...

    使用dom4j将xml字符串转换成Bean对象

    首先,dom4j是一个强大的Java XML API,它提供了丰富的功能,如读取、写入、修改和操作XML文档。其核心概念是Element(元素)、Attribute(属性)和Document(文档)。通过这些对象,我们可以方便地处理XML文档的...

    使用dom4j和jaxen解析xml

    - **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...

    dom4j操作XMl例子

    在本示例中,"dom4jExample.java"是一个Java程序,它展示了如何利用DOM4J库来操作XML文件。 首先,我们需要了解DOM4J的基本概念。DOM4J采用Document Object Model (DOM)接口,但它的实现比标准DOM更快,占用内存更...

    使用dom4j对xml的读写

    一旦我们有了`Document`对象,就可以通过XPath表达式或者直接遍历DOM树来访问XML元素和属性。 **2. XML的写入** XML的写入通常涉及`Document`对象的构建和序列化。我们可以使用`Element`对象创建XML结构,然后将其...

    使用dom4j读取xml四种方法

    Dom4j作为一款简洁高效的Java库,被广泛应用于解析、操作XML文档。本文将详细介绍使用dom4j读取XML文件的四种常见方法,并通过示例代码帮助读者更好地理解和掌握这些技术。 #### 方法一:使用`SAXReader`与`...

    dom4j解析XML所需jar包

    1. **DOM4J API**:DOM4J提供了一组直观的类和接口来操作XML文档,如`Element`代表XML元素,`Attribute`代表属性,`Document`表示整个XML文档,还有`Namespace`处理命名空间。通过这些API,开发者可以轻松地创建、...

Global site tag (gtag.js) - Google Analytics