ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java生成XML文件

2021-04-05 23:03:58  阅读:162  来源: 互联网

标签:XML xml Java Element bookstore new import 生成 book


上一篇文章写了xml文件4种读取方式,本篇文章将简介使用四种方式对xml进行写入。

  1. DOM
  2. SAX
  3. DOM4j
  4. JDOM

1.DOM

 1 import java.io.File;
 2 
 3 import javax.xml.parsers.DocumentBuilder;
 4 import javax.xml.parsers.DocumentBuilderFactory;
 5 import javax.xml.transform.OutputKeys;
 6 import javax.xml.transform.Transformer;
 7 import javax.xml.transform.TransformerFactory;
 8 import javax.xml.transform.dom.DOMSource;
 9 import javax.xml.transform.stream.StreamResult;
10 
11 import org.w3c.dom.Document;
12 import org.w3c.dom.Element;
13 
14 public class DomToXmlDemo {
15 
16     /**
17      * 生成xml方法
18      */
19     public static void createXml() {
20         try {
21             // 1.创建DocumentBuilderFactory对象
22             DocumentBuilderFactory factory = DocumentBuilderFactory
23                     .newInstance();
24             // 2.创建DocumentBuilder对象
25             DocumentBuilder builder = factory.newDocumentBuilder();
26             // 3.创建Document对象
27             Document document = builder.newDocument();
28             // 4.设置不显示“standalone="no"”
29             document.setXmlStandalone(true);
30 
31             // 5.创建根元素bookstore
32             Element bookstore = document.createElement("bookstore");
33 
34             // 6.循环向bookstore根节点中添加子节点book
35             for (int i = 1; i <= 3; i++) {
36                 Element book = document.createElement("book");
37                 // 7.向book根节点中添加子节点name
38                 Element name = document.createElement("name");
39                 name.setTextContent("Java程序设计" + i);
40                 book.appendChild(name);
41 
42                 // 向book根节点中添加子节点author
43                 Element author = document.createElement("author");
44                 author.setTextContent("张三" + i);
45                 book.appendChild(author);
46 
47                 // 向book根节点中添加子节点author
48                 Element price = document.createElement("price");
49                 price.setTextContent("6" + i);
50                 price.setAttribute("type", "元");
51                 book.appendChild(price);
52 
53                 // 8.为book节点添加属性
54                 book.setAttribute("id", "0" + i);
55                 // 9.将book节点添加到bookstore根节点中
56                 bookstore.appendChild(book);
57             }
58 
59             // 10.将bookstore节点(已包含book)添加到dom树中
60             document.appendChild(bookstore);
61 
62             // 11.创建TransformerFactory对象
63             TransformerFactory tff = TransformerFactory.newInstance();
64             // 12.创建 Transformer对象
65             Transformer tf = tff.newTransformer();
66             // 13.输出内容是否使用换行
67             tf.setOutputProperty(OutputKeys.INDENT, "yes");
68 
69             // 14.创建xml文件并写入内容
70             tf.transform(new DOMSource(document), new StreamResult(new File(
71                     "book1.xml")));
72             System.out.println("生成book1.xml成功");
73         } catch (Exception e) {
74             e.printStackTrace();
75             System.out.println("生成book1.xml失败");
76         }
77     }
78 
79     public static void main(String[] args) {
80         Long start = System.currentTimeMillis();
81         createXml();
82         System.out.println("运行时间:" + (System.currentTimeMillis() - start));
83     }
84 
85 }

 运行结果:

 

2.SAX

 1 import java.io.File;
 2 import java.io.FileOutputStream;
 3 
 4 import javax.xml.transform.OutputKeys;
 5 import javax.xml.transform.Result;
 6 import javax.xml.transform.Transformer;
 7 import javax.xml.transform.sax.SAXTransformerFactory;
 8 import javax.xml.transform.sax.TransformerHandler;
 9 import javax.xml.transform.stream.StreamResult;
10 
11 import org.xml.sax.helpers.AttributesImpl;
12 
13 public class SaxToXmlDemo {
14 
15     // 生成xml
16     public static void createXml() {
17         // 1、创建一个SAXTransformerFactory类的对象
18         SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory
19                 .newInstance();
20         try {
21             // 2、通过SAXTransformerFactory创建一个TransformerHandler的对象
22             TransformerHandler handler = tff.newTransformerHandler();
23             // 3、通过handler创建一个Transformer对象
24             Transformer tr = handler.getTransformer();
25             // 4、通过Transformer对象对生成的xml文件进行设置
26             // 设置编码方式
27             tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
28             // 设置是否换行
29             tr.setOutputProperty(OutputKeys.INDENT, "yes");
30             // 5、创建一个Result对象
31             File f = new File("book2.xml");
32             // 判断文件是否存在
33             if (!f.exists()) {
34                 f.createNewFile();
35             }
36             Result result = new StreamResult(new FileOutputStream(f));
37             // 6、使Result与handler关联
38             handler.setResult(result);
39 
40             // 打开document
41             handler.startDocument();
42             AttributesImpl attr = new AttributesImpl();
43             handler.startElement("", "", "bookstore", attr);
44             // attr.clear();
45 
46             for (int i = 1; i <= 3; i++) {
47                 attr.clear();
48                 attr.addAttribute("", "", "id", "", "0" + i);
49                 handler.startElement("", "", "book", attr);
50 
51                 // 创建name
52                 attr.clear();
53                 handler.startElement("", "", "name", attr);
54                 String name = "Java程序设计" + i;
55                 handler.characters(name.toCharArray(), 0, name.length());
56                 handler.endElement("", "", "name");
57 
58                 // 创建author
59                 attr.clear();
60                 handler.startElement("", "", "author", attr);
61                 String author = "张三" + i;
62                 handler.characters(author.toCharArray(), 0, author.length());
63                 handler.endElement("", "", "author");
64 
65                 // 创建price
66                 attr.clear();
67                 attr.addAttribute("", "", "type", "", "元");
68                 handler.startElement("", "", "price", attr);
69                 double price = 60 + i;
70                 handler.characters(("" + price).toCharArray(), 0,
71                         ("" + price).length());
72                 handler.endElement("", "", "price");
73 
74                 handler.endElement("", "", "book");
75             }
76             handler.endElement("", "", "bookstore");
77             // 关闭document
78             handler.endDocument();
79             System.out.println("生成book2.xml成功");
80         } catch (Exception e) {
81             e.printStackTrace();
82             System.out.println("生成book2.xml失败");
83         }
84     }
85 
86     public static void main(String[] args) {
87         Long start = System.currentTimeMillis();
88         createXml();
89         System.out.println("运行时间:" + (System.currentTimeMillis() - start));
90     }
91 }

 运行结果:

 

3.DOM4j

 1 import java.io.File;
 2 import java.io.FileOutputStream;
 3 
 4 import org.dom4j.Document;
 5 import org.dom4j.DocumentHelper;
 6 import org.dom4j.Element;
 7 import org.dom4j.io.OutputFormat;
 8 import org.dom4j.io.XMLWriter;
 9 
10 public class Dom4jToXmlDemo {
11 
12     /**
13      * 生成xml方法
14      */
15     public static void createXml() {
16         try {
17             // 1、创建document对象
18             Document document = DocumentHelper.createDocument();
19             // 2、创建根节点bookstore
20             Element bookstore = document.addElement("bookstore");
21             // 3、向bookstore节点添加version属性
22             bookstore.addAttribute("address", "新华书店");
23             // 4、生成子节点及子节点内容
24             Element book = bookstore.addElement("book");
25             book.addAttribute("id", "01");
26             Element name = book.addElement("name");
27             name.setText("Java程序设计");
28             Element author = book.addElement("author");
29             author.setText("张三");
30             Element price = book.addElement("price");
31             price.setText("60");
32             price.addAttribute("type", "元");
33 
34             // 5、设置生成xml的格式
35             OutputFormat format = OutputFormat.createPrettyPrint();
36             // 设置编码格式
37             format.setEncoding("UTF-8");
38 
39             // 6、生成xml文件
40             File file = new File("book3.xml");
41             XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
42             // 设置是否转义,默认使用转义字符
43             writer.setEscapeText(false);
44             writer.write(document);
45             writer.close();
46             System.out.println("生成book3.xml成功");
47         } catch (Exception e) {
48             e.printStackTrace();
49             System.out.println("生成book3.xml失败");
50         }
51     }
52 
53     public static void main(String[] args) {
54         Long start = System.currentTimeMillis();
55         createXml();
56         System.out.println("运行时间:" + (System.currentTimeMillis() - start));
57     }
58 
59 }

运行结果:

 

4.JDOM

 1 import java.io.File;
 2 import java.io.FileOutputStream;
 3 
 4 import org.jdom2.Document;
 5 import org.jdom2.Element;
 6 import org.jdom2.output.Format;
 7 import org.jdom2.output.XMLOutputter;
 8 
 9 public class JdomToXmlDemo {
10 
11     /**
12      * 生成xml方法
13      */
14     public static void createXml() {
15         try {
16             // 1、生成一个根节点
17             Element bookstore = new Element("bookstore");
18             // 2、为节点添加属性
19             bookstore.setAttribute("address", "新华书店");
20             // 3、生成一个document对象
21             Document document = new Document(bookstore);
22 
23             Element book = new Element("book");
24             book.setAttribute("id", "01");
25             bookstore.addContent(book);
26             Element name = new Element("name");
27             name.setText("Java程序设计");
28             book.addContent(name);
29             Element author = new Element("author");
30             author.setText("张三");
31             book.addContent(author);
32             Element price = new Element("price");
33             price.setText("60");
34             price.setAttribute("type", "元");
35             book.addContent(price);
36 
37             Format format = Format.getCompactFormat();
38             // 设置换行Tab或空格
39             format.setIndent("    ");
40             format.setEncoding("UTF-8");
41 
42             // 4、创建XMLOutputter的对象
43             XMLOutputter outputer = new XMLOutputter(format);
44             
45             // 5、利用outputer将document转换成xml文档
46             File file = new File("book4.xml");
47             outputer.output(document, new FileOutputStream(file));
48 
49             System.out.println("生成book4.xml成功");
50         } catch (Exception e) {
51             System.out.println("生成book4.xml失败");
52         }
53     }
54 
55     public static void main(String[] args) {
56         Long start = System.currentTimeMillis();
57         createXml();
58         System.out.println("运行时间:" + (System.currentTimeMillis() - start));
59     }
60 
61 }

运行结果:

 

标签:XML,xml,Java,Element,bookstore,new,import,生成,book
来源: https://www.cnblogs.com/lihuawei/p/14619606.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有