XML文档的转换

一般来说xml文件格式被认为是一种很好的数据交换格式。那么我们如何将其它形式的文件在java程序中转化成XML格式的文件呢?

在java.xml.transform包中的几个类,可以处理xml的转换。

一、下面是转换步骤:

(1)、创建文档对象

(2)、创建TransformerFactory实例;

(3)、使用TransformerFactory创建Transformer实例

(4)、使用transform()方法将源树输出到结果中(这里以流的形式输出到源文件中)

二、下面是一个例子

将一个已经创建好的xml文件通过流转换为DOM文件,对其进行加工,然后再转换为xml格式。

package com.xml.demo;

import java.io.File;
import java.io.FileOutputStream;

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 org.w3c.dom.Document;
import org.w3c.dom.Element;

public class MyWriterXMLByDOM {

    public static void main(String[] args) {
        //得到DOM解析器工厂实例
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        
        Element theBook = null, theElem = null, root = null;
        try {
            //设置由此工厂创建的解析器在解析xml文档的时候,必须删除元素的内容中的空格
            factory.setIgnoringElementContentWhitespace(true);
            //由DOM解析器工厂生成DOM解析器实例db
            DocumentBuilder db = factory.newDocumentBuilder();
            
            File file = new File("WebRoot\\t.xml");
            //解析xml文档的输入流,得到一个Document
            Document xmldoc = db.parse(file);
            //得到document的根节点
            root = xmldoc.getDocumentElement();
            //在dom文档中增加一个theBook节点,且为该节点追加三个子节点
            theBook = xmldoc.createElement("book");
            theElem = xmldoc.createElement("name");
            theElem.setTextContent("java高级程序设计");
            //将theElem节点转化为theBook的子节点
            theBook.appendChild(theElem);
            theElem = null;
            theElem = xmldoc.createElement("price");
            theElem.setTextContent("20");
            //将theElem节点转化为theBook的子节点
            theBook.appendChild(theElem);
            theElem = null;
            theElem = xmldoc.createElement("note");
            theElem.setTextContent("看过不后悔");
            theBook.appendChild(theElem);
            //把theBook节点插入为根节点的子节点
            root.appendChild(theBook);
            
            //将dom文档转化为xml文档
            //创建翻译器的生产工厂的实例
            TransformerFactory transFactory = TransformerFactory.newInstance();
            //由翻译器的生产工厂生产翻译器
            Transformer transformer = transFactory.newTransformer();
            //给我们的翻译器准备要翻译的原料(把我们的xmldoc文档转化成翻译器transformer能够翻译的DOMSource对象)
            DOMSource source = new DOMSource(xmldoc);
            //准备一个存放翻译器翻译结果的载体
            StreamResult result = new StreamResult(new FileOutputStream(file));
            //开动翻译器,进行翻译
            transformer.transform(source, result);

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

}

运行结果:

t.xml内容改变



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值