import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.IOException;
/**
-
@ClassName: DomTest2
-
@Description: Dom生成XML
-
@version: v1.0.0
-
@author: caojx
-
@date: 2017/9/05 13:07
*/
public class DomTest2 {public static void main(String[] args){
//1.创建一个DocumentBuilderFactory对象
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
//2.创建一个DocumentBuilder对象
try {
DocumentBuilder documentBuilder = builderFactory.newDocumentBuilder();
//3.创建一个document对象
Document document = documentBuilder.newDocument();
document.setXmlStandalone(true);//不包含dtd
//4.创建根节点
Element bookstore = document.createElement(“bookstore”);
//5.向bookstore根节点中添加子节点
Element book = document.createElement(“book”);Element name <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span><span class="token string">"name"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> name<span class="token punctuation">.</span><span class="token function">setTextContent</span><span class="token punctuation">(</span><span class="token string">"张三"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> bookstore<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>book<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//6.向book中添加属性</span> book<span class="token punctuation">.</span><span class="token function">setAttribute</span><span class="token punctuation">(</span><span class="token string">"id"</span><span class="token punctuation">,</span><span class="token string">"1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//7.向book中添加子节点</span> book<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//将根节点添加到dom中</span> document<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>bookstore<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//通过transformerFactory将dom树写入到xml中</span> <span class="token comment">//创建TransformerFactory</span> TransformerFactory transformerFactory <span class="token operator">=</span> TransformerFactory<span class="token punctuation">.</span><span class="token function">newInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//创建Transformer</span> Transformer transformer <span class="token operator">=</span> transformerFactory<span class="token punctuation">.</span><span class="token function">newTransformer</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//是否换行</span> transformer<span class="token punctuation">.</span><span class="token function">setOutputProperty</span><span class="token punctuation">(</span>OutputKeys<span class="token punctuation">.</span>INDENT<span class="token punctuation">,</span><span class="token string">"yes"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//缩进4个空格</span> transformer<span class="token punctuation">.</span><span class="token function">setOutputProperty</span><span class="token punctuation">(</span><span class="token string">"{http://xml.apache.org/xslt}indent-amount"</span><span class="token punctuation">,</span> <span class="token string">"4"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//将dom树写入到xml中</span> transformer<span class="token punctuation">.</span><span class="token function">transform</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">DOMSource</span><span class="token punctuation">(</span>document<span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token keyword">new</span> <span class="token class-name">StreamResult</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span><span class="token string">"dom.xml"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">ParserConfigurationException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span> e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">TransformerConfigurationException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span> e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">TransformerException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span> e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
生成结果:
<?xml version="1.0" encoding="UTF-8"?><bookstore>
<book id="1">
<name>张三</name>
</book>
</bookstore>
- 1
- 2
- 3
- 4
- 5
- 6
二、SAX生成XML
1.SAXTest2.java
package personal.caojx;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
import sun.jvm.hotspot.oops.OopUtilities;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.IOException;
/**
-
@ClassName: SAXTest2
-
@Description: SAX生成XML
-
@version: v1.0.0
-
@author: caojx
-
@date: 2017/8/25 13:07
*/
public class SAXTest2 {public static void main(String[] args){
//1.创建SAXTransformerFactory
SAXTransformerFactory saxTransformerFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
try {
//2.通过SAXTransformerFactory对象创建一个transformerHandler
TransformerHandler transformerHandler = saxTransformerFactory.newTransformerHandler();
//3.通过transformerHandler对象创建一个transformer
Transformer transformer = transformerHandler.getTransformer();
//4.通过Transformer对生成的xml格式进行设置
transformer.setOutputProperty(OutputKeys.INDENT,“yes”);
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", “4”);
//5.创建一个Result
File file = new File(“sax.xml”);
//6.创建result对象,并且使其与handler关联
Result result = new StreamResult(file);
transformerHandler.setResult(result);<span class="token comment">//7.利用handler对xml的文件内容进行编写</span> <span class="token comment">//打开document</span> transformerHandler<span class="token punctuation">.</span><span class="token function">startDocument</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//创建bookstore节点</span> AttributesImpl attributes <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AttributesImpl</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> transformerHandler<span class="token punctuation">.</span><span class="token function">startElement</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">,</span> <span class="token string">"bookstore"</span><span class="token punctuation">,</span> attributes<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//添加book节点和属性</span> attributes<span class="token punctuation">.</span><span class="token function">clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> attributes<span class="token punctuation">.</span><span class="token function">addAttribute</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">"id"</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">"1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> transformerHandler<span class="token punctuation">.</span><span class="token function">startElement</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">"book"</span><span class="token punctuation">,</span>attributes<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//添加name节点和文本</span> attributes<span class="token punctuation">.</span><span class="token function">clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> transformerHandler<span class="token punctuation">.</span><span class="token function">startElement</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">"name"</span><span class="token punctuation">,</span>attributes<span class="token punctuation">)</span><span class="token punctuation">;</span> transformerHandler<span class="token punctuation">.</span><span class="token function">characters</span><span class="token punctuation">(</span><span class="token string">"张三"</span><span class="token punctuation">.</span><span class="token function">toCharArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token string">"张三"</span><span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> transformerHandler<span class="token punctuation">.</span><span class="token function">endElement</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">"name"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> transformerHandler<span class="token punctuation">.</span><span class="token function">endElement</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">"book"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> transformerHandler<span class="token punctuation">.</span><span class="token function">endElement</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">,</span><span class="token string">"bookstore"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> transformerHandler<span class="token punctuation">.</span><span class="token function">endDocument</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">TransformerConfigurationException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span> e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">SAXException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span> e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
生成结果:
<?xml version="1.0" encoding="UTF-8"?><bookstore>
<book id="1">
<name>张三</name>
</book>
</bookstore>
- 1
- 2
- 3
- 4
- 5
三、JDOM生成XML
1.JDomTest2.java
package personal.caojx;
import org.jdom2.*;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.EscapeStrategy;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
-
ProjectName: xml-java
-
ClassName: JDomTest.java
-
@Description: JDOM生成XML
-
@version: v1.0.0
-
@author: caojx
-
@date: 2017/9/24 下午9:12
-
@since JDK 1.8
*/
public class JDomTest2 {public static void main(String[] args){
//1.生成一个根节点
Element rss = new Element(“rss”);
rss.setAttribute(“version”,“2.0”);
//2.生成document
Document document = new Document(rss);
Element channel = new Element(“channel”);
rss.addContent(channel);
Element title = new Element(“title”);
title.setText("<![CDATA[国内最新新闻]]>");
channel.addContent(title);Format format <span class="token operator">=</span> Format<span class="token punctuation">.</span><span class="token function">getPrettyFormat</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> format<span class="token punctuation">.</span><span class="token function">setEscapeStrategy</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">EscapeStrategy</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">boolean</span> <span class="token function">shouldEscape</span><span class="token punctuation">(</span><span class="token keyword">char</span> c<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//3.创建XMLOutputter</span> XMLOutputter outputter <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">XMLOutputter</span><span class="token punctuation">(</span>format<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//4.利用outputter将document对象转换成xml</span> <span class="token keyword">try</span> <span class="token punctuation">{</span> outputter<span class="token punctuation">.</span><span class="token function">output</span><span class="token punctuation">(</span>document<span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">FileOutputStream</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span><span class="token string">"jdom.xml"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">IOException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span> e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
生成结果:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[国内最新新闻]]></title>
</channel>
</rss>
- 1
- 2
- 3
- 4
- 5
- 6
四、DOM4J生成XML
1.DOM4JTest2.java
package personal.caojx;
import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.io.*;
import java.util.Iterator;
import java.util.List;
/**
-
ProjectName: xml-java
-
ClassName:DOM4JTest.java
-
@Description: Dom4j生成XML
-
@version: v1.0.0
-
@author: caojx
-
@date: 2017/9/24 下午9:45
-
@since JDK 1.8
*/
public class DOM4JTest2 {public static void main(String[] args) throws DocumentException {
//1.创建document对象,代表整个xml文档
Document document = DocumentHelper.createDocument();
//2.创建根节点
Element rss = document.addElement(“rss”);
//3.向rss节点中添加version属性
rss.addAttribute(“version”,“2.0”);
//4.生成子节点和节点内容
Element channel = rss.addElement(“channel”);
Element title = channel.addElement(“title”);
title.setText("<![CDATA[国内最新新闻]]>");
//设置生成xml的格式
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding(“GBK”);
//5.生成xml文件
File file = new File(“dom4j.xml”);
XMLWriter writer = null;
try {
writer = new XMLWriter(new FileOutputStream(file), outputFormat);
//设置对于特殊字符是否转义,默认是true转义
writer.setEscapeText(false);
writer.write(document);
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
生成结果:
<?xml version="1.0" encoding="GBK"?>
<rss version="2.0">
<channel>
<title><![CDATA[国内最新新闻]]></title>
</channel>
</rss>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
</div><div><div></div></div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-ff98e99283.css" rel="stylesheet">
</div>