`
javastyle
  • 浏览: 8565 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用jdk类库对xml文件进行修改

阅读更多
一般对xml文件的操作以读居多,对xml文件的修改不是很常见,今天写项目的时候遇到,赶紧google了一把,整理了下写个小例子跟大家分享下。直接使用jdk5.0以上版本自带的api来解决。
准备一个xml文件:
test.xml
<?xml version="1.0" encoding="utf-8"?>
<javastyle>  
        <book>  
                <title>Thanking in java</title>  
                <author>(美)埃克尔 著,陈昊鹏 译</author>  
                <publisher>机械工业出版社</publisher>  
                <isbn>9787111213826</isbn>  
                <price>108.00</price>
        </book>  
</javastyle>


package com.javastyle.test;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
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.XPathExpression;
import javax.xml.xpath.XPathFactory;

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

public class ModifyXML
{
	public static void main(String[] args) throws Exception
	{
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setNamespaceAware(true);
		DocumentBuilder builder = factory.newDocumentBuilder();
		//方便起见直接搞个绝对路径
		File file = new File(
				"E:\\MyEclipseWorkshop\\modifyxml\\src\\com\\javastyle\\testtest.xml");
		Document doc = builder.parse(file);
		XPathFactory pathFactory = XPathFactory.newInstance();
		XPath xpath = pathFactory.newXPath();
		// 使用xpath,找到需要的节点
		XPathExpression pathExpression = xpath.compile("//price/text()");
		Object result = pathExpression.evaluate(doc, XPathConstants.NODESET);
		NodeList nodes = (NodeList) result;
		for (int i = 0; i < nodes.getLength(); i++)
		{
			System.out.println(nodes.item(i).getNodeValue());
			
			nodes.item(i).setNodeValue("81.00");
			
			// 注意不要忘记更新文件,否则只会更新缓存,不会真正更新文件
			TransformerFactory tfFactory =  TransformerFactory.newInstance();
			Transformer tf = tfFactory.newTransformer();
			StreamResult sResult = new StreamResult(file);
			DOMSource source = new DOMSource(doc);
			tf.setOutputProperty(OutputKeys.VERSION, "1.0");
			tf.setOutputProperty(OutputKeys.ENCODING, "utf-8");
			tf.setOutputProperty(OutputKeys.INDENT, "yes");
			tf.transform(source, sResult);
			
			System.out.println(nodes.item(i).getNodeValue());
		}
	}
}



运行结果:
<?xml version="1.0" encoding="utf-8"?>
<javastyle>  
        <book>  
                <title>Thanking in java</title>  
                <author>(美)埃克尔 著,陈昊鹏 译</author>  
                <publisher>机械工业出版社</publisher>  
                <isbn>9787111213826</isbn>  
                <price>81.00</price>
        </book>  
</javastyle>






分享到:
评论

相关推荐

    jdk类库详细解析再也找不到更详细的了

    JDK类库是JDK中的一个重要部分,它提供了一系列预先定义好的类和接口,使得开发者可以便捷地进行系统级任务处理,如I/O操作、网络通信、多线程编程等。本篇文档将深入解析JDK类库,为初学者提供详尽的指导。 一、...

    在jdk5中使用JSR105实现XML签名认证的解决方案

    ### 在JDK5中使用JSR105实现XML签名认证的解决方案 #### JSR105简介 JSR105(Java Specification Request 105)即XML Digital Signature API,是Java平台的一项用于处理XML文档签名的技术规范。虽然它是JDK 1.6引入...

    jdk1.6缺省文件

    【标题】"JDK1.6缺省文件"指的是Java ...开发者可以通过这些文件进行Java程序的编写、编译、调试和优化。此外,理解这些文件结构也有助于配置Java环境,解决依赖问题,以及在不同的开发和运行环境中有效地使用JDK。

    Java文档-jdk-6u10-docs-java类库6.0-高压缩第二部分

    本部分主要关注的是Java类库6.0版本,具体为"Java文档-jdk-6u10-docs"的第二部分。在这一部分中,我们将深入探讨Java平台的核心组件和特性。 **一、Java API文档** `index.html`是Java API文档的主入口,通常包含了...

    java核心类库使用大全

    通过深入学习这份“java核心类库使用大全”,开发者不仅能掌握Java的基本语法,还能对Java平台提供的强大功能有深入的理解,从而更好地利用这些类库来解决实际问题。无论你是初学者还是经验丰富的开发者,这个资源都...

    jdk1.6.0-12

    - `lib`:存放JDK的库文件,如类库、jar文件等。 - `docs`:包含API文档和其他技术文档。 - `demo`:示例程序和应用,用于演示Java的功能。 - `include`:头文件,用于C/C++编程时调用Java Native Interface ...

    jdk 1.8压缩包

    1. **COPYRIGHT**:这是一个法律文件,详细列出了JDK 1.8的版权信息和使用许可条款,包括Oracle对软件的所有权以及用户在使用软件时的权利和限制。 2. **README.html**:通常包含有关如何安装和使用JDK的指南,可能...

    tomcat类库

    在IT行业中,Tomcat是一个广泛使用的开源Web服务器和Java应用服务器,特别针对Servlet和JSP进行优化。当你遇到“tomcat类库”相关的错误时,这通常意味着Tomcat在运行过程中遇到了与类库(JAR文件)相关的问题,可能...

    jdk6-x64.zip

    这些说明可能涵盖了如何设置开发环境、使用Java编译器(javac)将源代码编译为字节码、使用Java运行时环境(java.exe)执行.class文件、以及如何利用JDK附带的各种工具(如javadoc生成文档、jdb进行调试等)。...

    JDK1.6.0_13免安装版

    2. `lib` 目录:存储了JDK所需的各种库文件,如JVM运行所需的类库和开发者工具所需的库。 3. `include` 目录:包含了头文件,供本地方法接口(JNI)使用。 4. `jre` 目录:包含了Java运行环境,用于运行Java应用程序...

    jdk8,64位安装后的jre文件

    总结一下,"jdk8,64位安装后的jre文件"涵盖了64位环境下运行Java应用程序所需的全部组件,包括JVM、类库、运行时类库以及相关工具。理解和掌握这些内容,对于开发者和系统管理员在维护和优化Java应用时都至关重要。

    java常用类库中文速查表

    如果你需要对文件进行压缩或者解压缩处理,这个类库就显得十分实用。下载地址为:***。 处理常用编码方法的工具类包是Commons Codec,它提供了DES、SHA1、MD5、Base64等多种编码和解码的方法,是开发过程中进行加密...

    spring类库 spring类库

    Spring框架是Java开发中不可或缺的一部分,它以其模块化、松耦合和强大的功能特性而闻名。这个"spring类库"包含的资源可以...通过这些文件,开发者可以快速地在项目中引入和使用Spring框架,进行高效、稳定的开发工作。

    xml jdk1.6 jquery mysql API

    例如,XML官方指南中文版.chm文件可能包含了XML语法、解析器的使用、DOM和SAX解析方法以及XPath和XSLT等相关知识。对于JDK 1.6,开发者需要掌握如何使用Java类库,如java.io和java.util,以及如何利用JDBC(Java ...

    JDK1.7源码

    源码的开放使得开发者能够深入了解Java平台的工作原理,提升技术水平,同时也方便了对Java标准库进行二次开发或优化。 源码中的主要目录如`com`、`org`、`launcher`、`java`、`sunw`和`javax`,分别对应不同的功能...

    jdk1.6压缩包上传

    - **Java API**:一组预先定义好的类库,如集合框架、I/O流、网络编程等,开发者可以直接使用这些类库进行开发。 - **Java文档生成器(javadoc)**:用于生成HTML格式的API文档,帮助开发者理解类库的使用方法。 - *...

    jdk1.6.0-39

    6. **Java类库**:JDK附带了大量的Java类库,包括基础类库如IO、网络、集合框架、多线程、XML处理等,这些类库极大地简化了开发工作。 7. **开发者工具**:如jconsole用于监视Java应用的性能和资源消耗,jmap用于...

    JDK-1.6-Windows-32位 官方

    2. **泛型的完全支持**:自Java 5引入泛型以来,JDK 1.6对其进行了进一步的完善,提供了更好的类型检查和代码生成,从而降低了类型转换错误的可能性。 3. **动态代理**:JDK 1.6引入了`java.lang.reflect.Proxy`类...

    tomcat配置不同版本的JDK路径

    - **`server.xml`**:虽然这个文件不直接用于设置JDK版本,但如果需要进一步调整Tomcat的行为(如连接器设置),则可能需要修改它。 4. **重启Tomcat服务** 修改完以上配置后,需要重新启动Tomcat服务以使更改...

    java-jdk1.6-jdk-6u45-windows-x64.zip

    1. 改进的性能:JDK 1.6通过优化JVM(Java虚拟机)和类库提升了运行效率,尤其是在内存管理和垃圾回收方面。 2. 动态代理:引入了`java.lang.reflect.Proxy`类,使得动态创建代理对象成为可能,便于实现AOP(面向切...

Global site tag (gtag.js) - Google Analytics