首页 > 代码库 > Java生成XML文件

Java生成XML文件

《Java眼中的XML ---文件写入》

四种方法用Java生成一个XML文件。

1.通过DOM方式生成XML文档

技术分享
import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;public class DomCreateTest {        public void createXML() {        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        try {            DocumentBuilder builder = factory.newDocumentBuilder();            Document document = builder.newDocument();            // XML文件中第一行StandAlone表示该XML文件是否独立设置为yes为默认值  且不显示            // 表示独立没有外部文件为其服务  设置为no表示外部有其他文件为其服务            document.setXmlStandalone(true);            Element bookStore = document.createElement("bookStore");            Element book = document.createElement("book");            Element title = document.createElement("title");            Element author = document.createElement("author");            title.setTextContent("全职高手");            author.setTextContent("蝴蝶蓝");                        book.appendChild(title);            book.appendChild(author);            book.setAttribute("category", "e-sports");            bookStore.appendChild(book);                        document.appendChild(bookStore);            // 上面已经建好dom树  要将dom树转为xml文本            TransformerFactory tff = TransformerFactory.newInstance();            Transformer transformer = tff.newTransformer();            // 生成的xml文件格式  换行            transformer.setOutputProperty(OutputKeys.INDENT, "yes");            transformer.transform(new DOMSource(document), new StreamResult(new File("books.xml")));                    } catch (ParserConfigurationException e) {            e.printStackTrace();        } catch (TransformerConfigurationException e) {            e.printStackTrace();        } catch (TransformerException e) {            e.printStackTrace();        }    }        public static void main(String[] args) {        new DomCreateTest().createXML();    }    }
DomCreateTest.java

 

2.通过 SAX 方式生成 XML 文档

技术分享
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;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 org.xml.sax.SAXException;import org.xml.sax.helpers.AttributesImpl;public class SAXCreateTest {    public void createXML() {        SAXTransformerFactory factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();        try {            TransformerHandler handler = factory.newTransformerHandler();            Transformer transformer = handler.getTransformer();            // 设置字符编码            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");            // 设置换行            transformer.setOutputProperty(OutputKeys.INDENT, "yes");            File file = new File("books.xml");            if (!file.exists()) file.createNewFile();                        // 创建Result对象             Result result = new StreamResult(new FileOutputStream(file));            // 和Handler对象相关联            handler.setResult(result);            // 利用handler对XML文件内容进行编写            // 打开document            handler.startDocument();            // 如果没有属性就直接new就可以了            AttributesImpl attr = new AttributesImpl();            handler.startElement("", "", "bookStore", attr);                        attr.clear();             attr.addAttribute("", "", "category", "", "e-sports");            handler.startElement("", "", "book", attr);                        attr.clear();            handler.startElement("", "", "title", attr);            handler.characters("全职高手".toCharArray(), 0, "全职高手".length());            handler.endElement("", "", "title");                        attr.clear();            handler.startElement("", "", "author", attr);            handler.characters("蝴蝶蓝".toCharArray(), 0, "蝴蝶蓝".length());            handler.endElement("", "", "author");                        handler.endElement("", "", "book");                        handler.endElement("", "", "bookStore");                        handler.endDocument();                    } catch (TransformerConfigurationException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } catch (SAXException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }        public static void main(String[] args) {        new SAXCreateTest().createXML();    }}
SAXCreateTest.java

 

3.通过 DOM4J 方式生成 XML 文档

技术分享
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class DOM4JCraeteTest {        public void create() {        Document document = DocumentHelper.createDocument();        Element bookStore = document.addElement("bookStore");                Element book = bookStore.addElement("book");        book.addAttribute("category", "e-sport");                Element title = book.addElement("title");        title.addText("全职高手");        Element author = book.addElement("author");        author.addText("蝴蝶蓝");        // 设置格式        OutputFormat format = OutputFormat.createPrettyPrint();        format.setEncoding("utf-8");        File file = new File("books.xml");        XMLWriter writer = null;        // 设置是否转义  默认为true                try {            writer = new XMLWriter(new FileOutputStream(file), format);            writer.setEscapeText(false);            writer.write(document);            writer.close();        } catch (IOException e) {            e.printStackTrace();        }            }            public static void main(String[] args) {        new DOM4JCraeteTest().create();    }}
DOM4JCraeteTest.java

 

4.通过 JDOM 方式生成 XML 文档

技术分享
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.output.Format;import org.jdom2.output.XMLOutputter;public class JDOMCreateTest {        public void create() {        Element bookStore = new Element("bookStore");        Document document = new Document(bookStore);                Element book = new Element("book");        bookStore.addContent(book);        book.setAttribute("category", "e-sport");                Element title = new Element("title");        title.setText("全职高手");        book.addContent(title);                Element author = new Element("author");        book.addContent(author);                Format format = Format.getCompactFormat();        format.setIndent("    ");        format.setEncoding("GBK");                XMLOutputter outputter = new XMLOutputter(format);        try {            outputter.output(document, new FileOutputStream(new File("books.xml")));        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }            }        public static void main(String[] args) {        new JDOMCreateTest().create();    }}
JDOMCreateTest.java

 

生成文件效果

<?xml version="1.0" encoding="GBK"?><bookStore>    <book category="e-sport">        <title>全职高手</title>        <author />    </book></bookStore>

 

Java生成XML文件