zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    C#winForm调用WebService的远程接口
    [C#] 走进异步编程的世界
    新手浅谈C#Task异步编程
    C#操作XML方法详解
    C# 实现生产者消费者队列
    c#多线程同步之EventWaitHandle使用
    C# 队列(Queue)和 堆栈(Stack)
    UVA-11925 Generating Permutations (逆向思维)
    UVA-11491 Erasing and Winning (单调队列)
    UVA-12545 Bits Equalizer (贪心)
  • 原文地址:https://www.cnblogs.com/wenruo/p/6345122.html
Copyright © 2011-2022 走看看