您的位置:首页 > 其它

读取 生成 格式化 XML 文件

2012-02-22 11:21 190 查看
package xml;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.io.Writer;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.Result;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerException;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.TransformerFactoryConfigurationError;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.apache.xml.serialize.OutputFormat;

import org.apache.xml.serialize.XMLSerializer;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.xml.sax.SAXException;

public class XMLOperator {

public static Document createDoc() throws ParserConfigurationException{

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.newDocument();

return doc;

}

public static void createXMLFile(String fileName,Document doc) throws ParserConfigurationException, TransformerFactoryConfigurationError, TransformerException, IOException{

File f = new File(fileName);

OutputFormat format = new OutputFormat(doc);

format.setIndenting(true);

format.setIndent(2);

Writer out = new FileWriter(f);

XMLSerializer serializer = new XMLSerializer(out,format);

serializer.serialize(doc);

//out.flush();

out.close();

/*此注释部分为仅使用sun jdk 生成xml文件方法 在生成文件时 根元素与xml声明部分为一行

例如<?xml version="1.0" encoding="UTF-8"?> <root>

<child/>

</root>

没有正确格式化

在使用ibm jdk 中有org.apache.xml 的相关操作类可以格式化*/

/*

File f = new File(fileName);

StreamResult sr = new StreamResult(f);

Transformer tf = TransformerFactory.newInstance().newTransformer();

Source s = new DOMSource(doc);

tf.setOutputProperty(OutputKeys.INDENT, "yes");

tf.transform(s, sr);*/

}

public static Document loadXMFile(String fileName) throws ParserConfigurationException, SAXException, IOException{

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

return db.parse(fileName);

}

public static String parseString(Document doc) throws TransformerFactoryConfigurationError, TransformerException, UnsupportedEncodingException{

ByteArrayOutputStream baos = new ByteArrayOutputStream();

Transformer tf = TransformerFactory.newInstance().newTransformer();

Source s = new DOMSource(doc);

Result result = new StreamResult(baos);

tf.transform(s, result);

return new String(baos.toByteArray(),"UTF-8");

}

public static Document parseDocument(String XMLStr) throws ParserConfigurationException, SAXException, IOException{

ByteArrayInputStream bais = new ByteArrayInputStream(XMLStr.getBytes("UTF-8"));

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

dbf.setNamespaceAware(true);

DocumentBuilder db = dbf.newDocumentBuilder();

return db.parse(bais);

}

public static void main(String[] args) throws Error, Exception {

Document doc = createDoc();

Element root = doc.createElement("root");

Element childNode1 = doc.createElement("child1");

Element childNode2 = doc.createElement("child2");

childNode1.setAttribute("name", "nameValue");

childNode1.setAttribute("id", "idValue");

childNode1.appendChild(childNode2);

root.appendChild(childNode1);

doc.appendChild(root);

createXMLFile("test2.xml",doc) ;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: