1 importjava.io.File;2 importjava.io.StringWriter;3
4 importjavax.xml.parsers.DocumentBuilder;5 importjavax.xml.parsers.DocumentBuilderFactory;6 importjavax.xml.parsers.ParserConfigurationException;7 importjavax.xml.transform.OutputKeys;8 importjavax.xml.transform.Transformer;9 importjavax.xml.transform.TransformerConfigurationException;10 importjavax.xml.transform.TransformerException;11 importjavax.xml.transform.TransformerFactory;12 importjavax.xml.transform.TransformerFactoryConfigurationError;13 importjavax.xml.transform.dom.DOMSource;14 importjavax.xml.transform.stream.StreamResult;15
16 importorg.w3c.dom.DOMException;17 importorg.w3c.dom.Document;18
19 public classCreateConfigXmlUtil {20
21 publicDocument getDocument() {22 //创建一个Document对象,该对象代表一个XML文件
23 Document document = null;;24 try{25 //获取DOM 解析器的工厂实例
26 DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();27 //从 DOM 工厂获得 DOM 解析器
28 DocumentBuilder builder =factory.newDocumentBuilder();29 document =builder.newDocument();30 //设置XML声明中standalone为yes,即没有dtd和schema作为该XML的说明文档,且不显示该属性
31 document.setXmlStandalone(true);32 } catch(DOMException e) {33 e.printStackTrace();34 } catch(ParserConfigurationException e) {35 e.printStackTrace();36 }37 returndocument;38 }39
40 /**
41 * @Title: xmlToFile42 * @Description: xml输出到文件43 *@paramdocument44 *@paramfilePath45 *@returnvoid 返回类型46 *@throws
47 */
48 public voidxmlToFile(Document document,String filePath) {49 /**
50 * 将DOM树转换为XML文件:51 * 创建TransformerFactory类的对象52 * 通过TransformerFactory创建Transformer对象53 * 使用Transformer对象的transform()方法将DOM树转换为XML文件54 * (该方法有两个参数,第一个参数为源数据,需要创建DOMSource对象并将Document加载到其中;55 * 第二个参数为目的文件,即要生成的XML文件,需要创建StreamResult对象并指定目的文件)56 */
57 try{58 //获取TransformerFactory类的一个实例
59 TransformerFactory transformerFactory =TransformerFactory.newInstance();60 //通过TransformerFactory类的一个实例,创建Transformer对象
61 Transformer transformer =transformerFactory.newTransformer();62 //设置输出时的编码
63 transformer.setOutputProperty("encoding", "UTF-8");64 transformer.setOutputProperty(OutputKeys.INDENT, "yes");//设置输出数据时换行65 //将DOM树转换为XML文件66 //第一个参数为源数据,需要创建DOMSource对象并将Document加载到其中67 //第二个参数为目的文件,即要生成的XML文件,需要创建StreamResult对象并指定目的文件68 //"./data/languages.xml"
69 transformer.transform(newDOMSource(document),70 new StreamResult(newFile(filePath)));71 } catch(TransformerConfigurationException e) {72 e.printStackTrace();73 } catch(IllegalArgumentException e) {74 e.printStackTrace();75 } catch(TransformerFactoryConfigurationError e) {76 e.printStackTrace();77 } catch(TransformerException e) {78 e.printStackTrace();79 }80 }81
82 /**
83 * @Title: xmlToConsole84 * @Description: xml输出到控制台85 *@paramdocument86 *@returnvoid 返回类型87 *@throws
88 */
89 public static voidxmlToConsole(Document document) {90 try{91 //获取TransformerFactory类的一个实例
92 TransformerFactory transformerFactory =TransformerFactory.newInstance();93 //通过TransformerFactory类的一个实例,创建Transformer对象
94 Transformer transformer =transformerFactory.newTransformer();95 //设置输出时的编码
96 transformer.setOutputProperty("encoding", "UTF-8");97 transformer.setOutputProperty(OutputKeys.INDENT, "yes");//设置输出数据时换行
98 StringWriter writer = newStringWriter();99 transformer.transform(new DOMSource(document), newStreamResult(writer));100 System.out.println(writer.toString());//将流输出到控制台
101 } catch(TransformerConfigurationException e) {102 e.printStackTrace();103 } catch(IllegalArgumentException e) {104 e.printStackTrace();105 } catch(TransformerFactoryConfigurationError e) {106 e.printStackTrace();107 } catch(TransformerException e) {108 e.printStackTrace();109 }110 }111 }