`
schy_hqh
  • 浏览: 558077 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

使用Transformer更新XML

 
阅读更多
package com.hqh.stax;

import java.io.InputStream;

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

import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class TestUpdateElementVal {
	/**
	 * 1.使用xpath查找xml的节点
	 * 2.更新XML的节点
	 * 3.使用Transformer将更新后的XML文档进行输出
	 * 
	 * 需求:将books.xml中title='XQuery Kick Start'的book的price更新为100.00
	 */
	@Test
	public void testUpdateElement() {
		InputStream is = null;
		try {
			//将xml以流的形式转换为文档对象
			is = Thread.currentThread().getContextClassLoader()
					.getResourceAsStream("books.xml");
			DocumentBuilder builder = DocumentBuilderFactory.newInstance()
					.newDocumentBuilder();
			Document doc = builder.parse(is);
			
			//通过xpath定位到目标元素
			XPath xpath = XPathFactory.newInstance().newXPath();
			NodeList nodeList = (NodeList)xpath.evaluate("//book[title='XQuery Kick Start']", doc, XPathConstants.NODESET);
			Element bookElement = (Element)nodeList.item(0);
			Element priceElement = (Element)bookElement.getElementsByTagName("price").item(0);
			//---修改元素,设置新值---
			priceElement.setTextContent("100.00");
			
			
			//将更新后的xml进行输出
			Transformer trans = TransformerFactory.newInstance().newTransformer();
			trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			//第一行换行
			trans.setOutputProperty(OutputKeys.INDENT,"yes");
			//指定转换后的结果输出目的地
			Result result = new StreamResult(System.out);
			//转换并输出
			trans.transform(new DOMSource(doc), result);
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {

		}
	}
}

分享到:
评论

相关推荐

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

    使用DocumentBuilderFactory和DocumentBuilder可以创建一个新的Document对象,读取现有的XML文件,对其进行修改,然后使用Transformer将修改后的Document写回文件。这种方法的优点在于它能确保更新过程的完整性和...

    Java更新XML的四种常用方法简介

    对于初学者,一个常见问题是:在使用JAXP更新DOM Tree后,原始XML文件并未随之更新。本文将介绍如何实现DOM Tree和原始XML文档的同步更新。 方法一:直接读写XML文档 这是一种直接但效率较低的方法。首先,通过DOM...

    java中使用xslt转换xml成为另一个xml

    本文将详细介绍如何在Java中使用XSLT来实现XML到XML的转换。 首先,理解XML和XSLT的基本概念: 1. XML:XML是一种结构化数据存储格式,它定义了数据的结构和规则,使数据具有自我描述性,易于解析和交换。 2. XSLT...

    XLSTransformer导出excel所需包

    - 使用XLSTransformer:将XML文件和XSLT文件作为输入,生成Excel输出。 5. **所需包**:压缩包"XLSTransformer所需包"可能包括了以下内容: - Java运行环境(JRE):XLSTransformer通常基于Java编写,因此需要...

    XLSTransformer jar

    在Java开发中,使用XLSTransformer进行数据转换时,通常会依赖Apache Commons或JAXB等库来处理XML和Excel之间的交互。具体步骤包括读取XML源文件,加载XSL样式表,然后使用XLSTransformer进行转换,最后将结果写入...

    Java语言编程中更新XML文档的四种常用方法

    使用DOM解析器进行XML文档更新的方法是最直观且易于理解的一种方法。具体步骤包括: 1. 创建`DocumentBuilderFactory`对象; 2. 使用`DocumentBuilderFactory`创建`DocumentBuilder`对象; 3. 通过`DocumentBuilder`...

    格式化xml字符串,并生成xml文件

    例如,使用`java.io.FileInputStream`和`java.io.InputStreamReader`读取XML文件,然后用`javax.xml.transform.Transformer`将XML文档转换为字符串。 ```java import java.io.File; import java.io.FileInputStream...

    XLSTransformer导出excel文件所需的jar包

    `XLSTransformer`是一个用于将XML文件转换为Excel文件的工具,它基于Java的`JAXB`(Java Architecture for XML Binding)和`XSLT`(Extensible Stylesheet Language Transformations)技术。本篇文章将详细介绍如何...

    java http 发送xml报文(java发送xml报文实例+参数)

    可以使用DOM(Document Object Model)或者SAX(Simple API for XML)解析器来生成XML文档。例如,使用DOM解析器创建XML如下: ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();...

    JAVA XML解析demo可直接使用

    6. **保存修改**:完成操作后,使用`Transformer`和`TransformerFactory`将内存中的`Document`对象转换回XML文件。 ```java TransformerFactory transformerFactory = TransformerFactory.newInstance(); ...

    Java格式化Xml文件

    本文将深入探讨如何使用Java来格式化XML文件。 首先,我们需要了解Java中处理XML的基本库——`javax.xml.transform`和`javax.xml.parsers`。这两个包提供了处理XML的API,包括解析XML、转换XML以及格式化XML的功能...

    MATLAB读和写xml文件

    可以使用`javax.xml.transform.Transformer`类来进行转换和写入操作。 ```matlab import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom....

    Xml完全操作 XML增删改查

    修改XML通常涉及找到要更改的节点,然后更新其属性或内容。例如,如果要修改某个元素的文本,可以使用DOM API的`Node.setTextContent()`方法;如果要更改属性值,可以使用`Node.setAttribute()`。注意,修改后需要...

    java 通过模板生成 xml,发送报文

    本篇将详细介绍如何在Java中使用模板来生成XML,以及如何发送这些报文。 首先,让我们理解Java生成XML的基本步骤: 1. **创建XML文档对象**:在Java中,我们可以使用`DocumentBuilderFactory`和`DocumentBuilder`...

    android 解析XML文件 生成XML文件

    本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...

    【下载】Android 使用SAX实现XML的读和写,使用XML与后台交互

    在Android开发中,XML是一种广泛使用的数据交换格式,特别是在与后台服务器进行数据交互时。本文将深入探讨如何在Android平台上利用SAX(Simple API for XML)解析器来读取和写入XML数据,以及如何利用XML进行后台...

    java xml.java操作XML文档

    8. XSLT: 是一种转换XML文档的语言,使用`javax.xml.transform.TransformerFactory`和`javax.xml.transform.Source`可以实现XSLT转换。 通过这些API,开发者可以根据需求选择最适合的XML处理方式,不论是小型还是...

    java一键xml转map,一键map转xml工具类

    首先,从Map中获取键值对,创建相应的XML元素和属性,然后通过Transformer将这些元素转换为XML字符串。`EasyXmlUtil`中应该有一个对应的`mapToXml`方法,接收一个Map对象,返回生成的XML字符串。 在`EasyXmlUtil`类...

    向xml添加数据 xml插入数据 xml添加操作

    4. **使用Transformer保存更改**:`TransformerFactory`和`Transformer`用于将`Document`对象转换回XML字符串或写入文件。例如: ```java TransformerFactory transformerFactory = TransformerFactory.new...

Global site tag (gtag.js) - Google Analytics