XML文件生成

来源:互联网 发布:烈焰龙城轮回数据 编辑:程序博客网 时间:2024/06/05 20:44
Java代码 复制代码 收藏代码
  1. // 主要的包
  2. import javax.xml.transform.OutputKeys;
  3. import javax.xml.transform.Result;
  4. import javax.xml.transform.Transformer;
  5. import javax.xml.transform.TransformerConfigurationException;
  6. import javax.xml.transform.sax.SAXTransformerFactory;
  7. import javax.xml.transform.sax.TransformerHandler;
  8. import javax.xml.transform.stream.StreamResult;
  9. import org.xml.sax.helpers.AttributesImpl;

Java代码 复制代码 收藏代码
  1. // 大体思路
  2. // 通过工厂创建实体
  3. SAXTransformerFactory fac = (SAXTransformerFactory) SAXTransformerFactory
  4. .newInstance();
  5. TransformerHandler handler = null;
  6. OutputStream outStream = null;
  7. try {
  8. handler = fac.newTransformerHandler();
  9. // 输出文件参数设置
  10. Transformer tf = handler.getTransformer();
  11. tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");// 编码格式
  12. tf.setOutputProperty(OutputKeys.INDENT, "yes"); // 是否自动缩进
  13. tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");// 是否忽略xml声明
  14. File file = new File("E:\\path\\file.xml");// 注意:文件会自动创建,但文件路径(E:\\path)需存在,否则报异常
  15. outStream = new FileOutputStream(file);
  16. Result rsxml = new StreamResult(outStream);// 注意:创建流的构造函数可以指定File文件 也可指定为String路径,
  17. // 但指定为包含中文的路径可能会出现"java.net.MalformedURLException: unknown protocol: e"的异常
  18. handler.setResult(rsxml);
  19. // 文档开始
  20. handler.startDocument();
  21. // 创建xml节点属性对象
  22. AttributesImpl atts = new AttributesImpl();
  23. handler.startElement("", "","Events", atts); // 开始Events节点
  24. // 创建新的节点属性对象
  25. atts = new AttributesImpl();
  26. // 为节点元素添加属性
  27. // atts.addAttribute(String uri, String localName, String qName, String type, String value)
  28. // 通常我们只需设置 属性名称qName(第三个参数)和属性值value(第五个参数)
  29. atts.addAttribute("", "","AttributeName1", "", "AttributeValue1");
  30. atts.addAttribute("", "","AttributeName2", "", "AttributeValue2");
  31. // 写入节点
  32. // handler.startElement(String uri, String localName, String qName, Attributes attributes)
  33. // 通常我们只需设置节点名称qName(第三个参数)和属性对象attributes(第四个参数)
  34. handler.startElement("", "","Event", atts);// 开始Event节点,并且附加属性atts
  35. handler.endElement("", "","Event"); // 结束Event节点
  36. // todo
  37. handler.endElement("", "","Events"); // 结束Events节点
  38. // 文档结束
  39. handler.endDocument();
  40. } catch (TransformerConfigurationException e) {
  41. e.printStackTrace();
  42. } catch (FileNotFoundException e) {
  43. e.printStackTrace();
  44. } catch (SAXException e) {
  45. e.printStackTrace();
  46. } finally {
  47. if (outStream != null)
  48. try {
  49. outStream.close();
  50. } catch (IOException e) {
  51. e.printStackTrace();
  52. }
  53. }  
原创粉丝点击