使用DOM操作XML文件之创建基本的XML文件

一、技术要点

1.载入文档

XML文档只有载入内存才能被操作,对于一个XML文档,载入内存之后成为Document对象。载入过程如下:

(1)实例化 javax.xml.parsers.DocumentBuilderFactory,并通过DocumentBuilderFactory实例化 javax.xml.parsers.DocumentBuilder

     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();

(2)通过DocumentBuilder的parse(String)方法传入文件路径,载入文档,并返回Document对象。

    Document doc= db.parse(books.xml);

(3)使用Document对象。

2.保存文档

将文档保存在硬盘上,也是将该Document对象写入硬盘。保存过程如下。

(1)实例化javax.xml.transform.TransformerFactory,并通过TransformerFactory实例化javax.xml.transform.Transformer,为了支持中文,通常还设置Transformer的encoding。

     TransformerFactory tff=TransformerFactory.newInstance();
     Transformer tf= tff.newTransformer();
    tf.setOutputProperty("encoding","utf-8");

(2)通过javax.xml.transform.dom.将Document对象封装为DOM源,通过javax.xml.transform.stream.StreamResult包装java.io.File对象,确定输出目标。

     DOMSource source = new DOMSource(doc);
     File file = new File("newFile.xml");
     StreamResult result = new StreamResult(file);


(3)利用Transformer 的transform方法将源输出到目标。

     tf.transform(source,result);

示例程序:

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
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 Test01 {

	public static void main(String[] args) {
		//创建一个DocumentBuilderFactory的对象
				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
				//创建一个DocumentBuilder的对象
				DocumentBuilder db = null;
				try {
					db = dbf.newDocumentBuilder();
				} 
				catch (ParserConfigurationException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				Document document= db.newDocument();
				document.setXmlStandalone(true);
				Element bookstore=	document.createElement("bookstore");
				//向bookstores根节点中添加子节点book
				Element book=document.createElement("book");
				
				/*
				 * 为book节点添加子节点name
				 */
				Element name = document.createElement("name");
				name.setTextContent("小王子");//设置name节点的节点值
				book.appendChild(name);//将子节点name添加到book节点中
				
				/*
				 * 为book节点添加子节点year
				 */
				Element year = document.createElement("year");
				year.setTextContent("2012");
				book.appendChild(year);
				
				/*
				 * 为book节点添加子节点author
				 */
				Element author = document.createElement("author");
				author.setTextContent("马丁");
				book.appendChild(author);
				
				//向book节点中添加属性
				book.setAttribute("id", "1");
				//将book节点加到bookstore根节点中
				bookstore.appendChild(book);
				//将bookstore节点(已经包含了book节点)添加到dom树中
				document.appendChild(bookstore);
				
				/*
				 * 
				 */
				//创建TransformerFactory对象
				TransformerFactory tff=TransformerFactory.newInstance();
				try {
					//创建Transformer对象
						Transformer tf= tff.newTransformer();
						tf.setOutputProperty(OutputKeys.INDENT, "yes");//使属性换行
						tf.transform(new DOMSource(document),new StreamResult(new File("book1.xml")));
					} 
				catch (TransformerException e) 
				{
						// TODO Auto-generated catch block
						e.printStackTrace();
				}
					

	}

}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值