Java生成XML文件


上一篇文章寫了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 }

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM