dom解析XML文件操作

XML文件

<?xml version = "1.0" encoding = "GBK"?>
<addresslist>
<linkman>
	<name>张泽</name>
	<e-mail>[email protected]</e-mail>
</linkman>
	<name>zhangeze</name>
	<e-mail>[email protected]</e-mail>
</addresslist>


解析以上XML文件
package zz.domdemo;
import java.io.*;
import javax.xml.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.DocumentBuilderFactory;//除掉错误!为什么

javax.xml.*类不能包含这行的类!!!

// 解析XML文件
public class DOMDemo02{
	public static void main(String []args) throws Exception{
		// (1)建立DocumentBuilderFactory,用以取得DocumentBuilder
		DocumentBuilderFactory factory = 

DocumentBuilderFactory.newInstance();
		// (2)通过DocumentBuilderFactory取得DocumentBuilder
		javax.xml.parsers.DocumentBuilder builder = null;
		try{
			builder = factory.newDocumentBuilder();
		}catch (ParserConfigurationException e){
			e.printStackTrace();
		}

		// (3)定义Document接口对象,通过DocumentBuilder类进行DOM树的

转换操作
		Document doc = null;
		// 读取指定路径的文件
		try{
			doc = builder.parse("D:" + File.separator + 

"dom_demo_01.xml");		
		}catch (SAXException e){
			e.printStackTrace();
		}catch (IOException e){
			e.printStackTrace();
		}
		// 查找linkman的节点
		NodeList nl = doc.getElementsByTagName("linkman");
		// 输出NodeList中第一个子节点中文本的内容
		for (int i = 0; i < nl.getLength(); i++){
			Element e = (Element)nl.item(i);	// 取得每一

个元素
			System.out.println("姓名:" + 

e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
			System.out.println("邮箱:" + 

e.getElementsByTagName("e-mail").item(0).getFirstChild().getNodeValue());	

		
		}

	}
}

程序运行结果:
姓名:张泽
邮箱:[email protected]利用DOM进行XML文件的输出要生成的XML格式


将生成的XML 文件输出到output.xml文件中:
package zz.domdemo;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;//除掉错误!为什么

javax.xml.*类不能包含这行的类!!!
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
// 将生成的XML文档输出到文件中
public class DOMDemo03{
	public static void main(String []args) {
		// (1)建立DocumentBuilderFactory,用以取得DocumentBuilder
		DocumentBuilderFactory factory = 

DocumentBuilderFactory.newInstance();
		// (2)通过DocumentBuilderFactory取得DocumentBuilder
		javax.xml.parsers.DocumentBuilder builder = null;
		try{
			builder = factory.newDocumentBuilder();
		}catch (ParserConfigurationException e){
			e.printStackTrace();
		}

		// (3)定义Document接口对象,通过DocumentBuilder类进行DOM树的

转换操作
		Document doc = null;
		// 创建一个新的文档
		doc = builder.newDocument();
		// (4)建立各个操作点
		Element addresslist = doc.createElement("addresslist");
		Element linkman = doc.createElement("linkmane");
		Element name = doc.createElement("name");
		Element e_mail = doc.createElement("e_mail");
		// (5)设置节点的文本内容,即为每一个节点添加文本节点
		name.appendChild(doc.createTextNode("张泽"));	// 设置文本
		e_mail.appendChild(doc.createTextNode

("[email protected]"));
		// (6)设置节点关系
		linkman.appendChild(name);
		linkman.appendChild(e_mail);
		addresslist.appendChild(linkman);
		doc.appendChild(addresslist);	// 文档上保存节点
		// (7)输出文档到 文件中
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer t = null;
		try{
			t = tf.newTransformer();			
		}catch (TransformerConfigurationException e){
			e.printStackTrace();
		}
		t.setOutputProperty(OutputKeys.ENCODING, "GBK");
		DOMSource doms = new DOMSource(doc);
		StreamResult sr = new StreamResult(new File("D:" + 

File.separator + "output.xml"));	
		try{
			t.transform(doms, sr);
		}catch (TransformerException e){
			e.printStackTrace();
		}		
	}
}

程序运行结果:
dom解析XML文件操作_第1张图片

问题:
DOMDemo03.java将生成的XML文档输出到文件中的运行问题:
Warning:  The encoding 'GBK' is not supported by the Java runtime.

你可能感兴趣的:(dom解析XML文件操作)