package com.google.mcommerce.sample.android.chapter11.xml; import java.io.File; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; 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; /** * 创建xml工具类 DOM方式 */ public class XmlCreater { private Document doc = null;// 新创建的DOM private Element root = null;// 根节点 private String encoding = "UTF-8";// 默认为UTF-8 public XmlCreater() { init(); } private void init() { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factory.newDocumentBuilder(); doc = builder.newDocument();// 新建DOM } catch (ParserConfigurationException e) { e.printStackTrace(); } } /** * 创建xml的根节点 * * @param rootTagName * @return */ public Element createRootElement(String rootTagName) { if (doc.getDocumentElement() == null) { root = doc.createElement(rootTagName); doc.appendChild(root); return root; } return doc.getDocumentElement(); } /** * 创建一个名为tagName,值为value的节点 * * @param tagName * @param value * @return */ public Element createElement(String tagName, String value) { Document doc = root.getOwnerDocument(); Element child = doc.createElement(tagName); child.setTextContent(value); return child; } /** * 创建一个名为tagName的空节点。 * * @param tagName * @return */ public Element createElement(String tagName) { Document doc = root.getOwnerDocument(); Element child = doc.createElement(tagName); return child; } /** * 传入文件地址路径,生成对应的xml文件 * * @param path */ public void buildXmlFile(String path) { TransformerFactory tfactory = TransformerFactory.newInstance(); try { Transformer transformer = tfactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File(path)); transformer.setOutputProperty("encoding", this.encoding); transformer.transform(source, result); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } /** * 返回xml对应的String字符串 * * @return */ public String xmlToString() { String xmlString = ""; TransformerFactory tfactory = TransformerFactory.newInstance(); try { Transformer transformer = tfactory.newTransformer(); DOMSource source = new DOMSource(doc); StringWriter writer = new StringWriter(); StreamResult result = new StreamResult(writer); transformer.setOutputProperty("encoding", this.encoding); transformer.transform(source, result); xmlString = writer.getBuffer().toString(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } return xmlString; } /** * @return 返回 doc。 */ public Document getDoc() { return doc; } /** * 设置当前xml的编码格式 * * @param encoding */ public void setEncoding(String encoding) { this.encoding = encoding; } }