Java使用DOM创建XML以及向原有的XML追加内容。

时间:2023-01-14 09:36:09

创建新的xml文件

步骤:

1.得到DOM解析器的工厂实例DocumentBuilderFactory

2.DOM工厂中获取DOM解析器

3创建得到DOM

4创建节点,添加节点

5将刚创建的节点添加到另一个节点上

6将节点添加到document

7保存xml文件

代码:
 // 1.得到DOM解析器的工厂实例  
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
        // 2.从DOM工厂里获取DOM解析器  
        DocumentBuilder db;
		try {
	        db = dbf.newDocumentBuilder();
	        Document docs = db.newDocument();
	        //创建节点  
	        Element noteElement = docs.createElement("note");  
	        Element toElement =  docs.createElement("to");  
	        Text l = docs.createTextNode("333");  
	        toElement.appendChild(l);//lableElement.setNodeValue(lable);  
	        Element fromElement =  docs.createElement("from");  
	        Text t = docs.createTextNode("321");  
	        fromElement.appendChild(t);//titleElement.setNodeValue(title);  
	        Element headingElement =  docs.createElement("heading");  
	        Text x = docs.createTextNode("sadda");  
	        headingElement.appendChild(x);//textElement.setNodeValue(text); 
	        
	        String time=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
	        Element bodyElement =  docs.createElement("body");  
	        Text m = docs.createTextNode(time);  
	        bodyElement.appendChild(m);  
	          
	        //添加父子关系  
	        noteElement.appendChild(toElement);  
	        noteElement.appendChild(fromElement);  
	        noteElement.appendChild(headingElement);  
	        noteElement.appendChild(bodyElement);  
	        //Element docsElement=(Element)docs.getElementsByTagName("docs").item(0);  
	        //docsElement.appendChild(docElement);  
	        //将节点添加到document中
	        docs.getDocumentElement().appendChild(noteElement);  
	          
	        //保存xml文件  
	        TransformerFactory transformerFactory=TransformerFactory.newInstance();  
	        Transformer transformer=transformerFactory.newTransformer();  
	        DOMSource domSource=new DOMSource(docs);  
	          
	        //设置编码类型  
	        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");  
	        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
	        File f=new File("e:\\Test.xml");
	        StreamResult result=new StreamResult(new FileOutputStream(f));  
	          
	        //把DOM树转换为xml文件  
	        transformer.transform(domSource, result); 
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
       
	}

追加内容:

package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

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.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

public class TestXml {
	public static void main(String[] args) {
		
         // 1.得到DOM解析器的工厂实例  
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
        // 2.从DOM工厂里获取DOM解析器  
        DocumentBuilder db;
	try {
		db = dbf.newDocumentBuilder();
		// 3.解析XML文档,得到DOM树  
	        File f=new File("e:\\Test.xml");
	        Document docs = db.parse(f);  
	        
	        //创建节点  
	        Element noteElement = docs.createElement("note");  
	        Element toElement =  docs.createElement("to");  
	        Text l = docs.createTextNode("333");  
	        toElement.appendChild(l);//lableElement.setNodeValue(lable);  
	        Element fromElement =  docs.createElement("from");  
	        Text t = docs.createTextNode("321");  
	        fromElement.appendChild(t);//titleElement.setNodeValue(title);  
	        Element headingElement =  docs.createElement("heading");  
	        Text x = docs.createTextNode("sadda");  
	        headingElement.appendChild(x);//textElement.setNodeValue(text); 
	        
	        String time=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
	        Element bodyElement =  docs.createElement("body");  
	        Text m = docs.createTextNode(time);  
	        bodyElement.appendChild(m);  
	          
	        //添加父子关系  
	        noteElement.appendChild(toElement);  
	        noteElement.appendChild(fromElement);  
	        noteElement.appendChild(headingElement);  
	        noteElement.appendChild(bodyElement);  
	        
	        docs.getDocumentElement().appendChild(noteElement);  
	          
	        //保存xml文件  
	        TransformerFactory transformerFactory=TransformerFactory.newInstance();  
	        Transformer transformer=transformerFactory.newTransformer();  
	        DOMSource domSource=new DOMSource(docs);  
	          
	        //设置编码类型  
	        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");  
	        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
	        StreamResult result=new StreamResult(new FileOutputStream(f));  
	          
	        //把DOM树转换为xml文件  
	        transformer.transform(domSource, result); 
	} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
       
	}
}