加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java生成XML文件

发布时间:2020-12-14 06:32:49 所属栏目:Java 来源:网络整理
导读:h2 class="l"《a href="http://www.imooc.com/learn/251" target="_blank"Java眼中的XML ---文件写入》 四种方法用Java生成一个XML文件。 1.通过DOM方式生成XML文档 span style="color: #0000ff;"import span style="color: #000000;" javax.xml.parsers.

<h2 class="l">《<a href="http://www.imooc.com/learn/251" target="_blank">Java眼中的XML ---文件写入》

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

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

<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.DocumentBuilder;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.DocumentBuilderFactory;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.parsers.ParserConfigurationException;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.OutputKeys;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.Transformer;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.TransformerConfigurationException;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.TransformerException;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.TransformerFactory;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.dom.DOMSource;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.stream.StreamResult;

<span style="color: #0000ff;">import<span style="color: #000000;"> org.w3c.dom.Document;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.w3c.dom.Element;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> DomCreateTest {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; createXML() {
    DocumentBuilderFactory factory </span>=<span style="color: #000000;"&gt; DocumentBuilderFactory.newInstance();
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        DocumentBuilder builder </span>=<span style="color: #000000;"&gt; factory.newDocumentBuilder();
        Document document </span>=<span style="color: #000000;"&gt; builder.newDocument();
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; XML文件中第一行StandAlone表示该XML文件是否独立设置为yes为默认值  且不显示
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 表示独立没有外部文件为其服务  设置为no表示外部有其他文件为其服务</span>
        document.setXmlStandalone(<span style="color: #0000ff;"&gt;true</span><span style="color: #000000;"&gt;);
        Element bookStore </span>= document.createElement("bookStore"<span style="color: #000000;"&gt;);
        Element book </span>= document.createElement("book"<span style="color: #000000;"&gt;);
        Element title </span>= document.createElement("title"<span style="color: #000000;"&gt;);
        Element author </span>= document.createElement("author"<span style="color: #000000;"&gt;);
        title.setTextContent(</span>"全职高手"<span style="color: #000000;"&gt;);
        author.setTextContent(</span>"蝴蝶蓝"<span style="color: #000000;"&gt;);

        book.appendChild(title);
        book.appendChild(author);
        book.setAttribute(</span>"category","e-sports"<span style="color: #000000;"&gt;);
        bookStore.appendChild(book);

        document.appendChild(bookStore);
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 上面已经建好dom树  要将dom树转为xml文本</span>
        TransformerFactory tff =<span style="color: #000000;"&gt; TransformerFactory.newInstance();
        Transformer transformer </span>=<span style="color: #000000;"&gt; tff.newTransformer();
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 生成的xml文件格式  换行</span>
        transformer.setOutputProperty(OutputKeys.INDENT,"yes"<span style="color: #000000;"&gt;);
        transformer.transform(</span><span style="color: #0000ff;"&gt;new</span> DOMSource(document),<span style="color: #0000ff;"&gt;new</span> StreamResult(<span style="color: #0000ff;"&gt;new</span> File("books.xml"<span style="color: #000000;"&gt;)));

    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (ParserConfigurationException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (TransformerConfigurationException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (TransformerException e) {
        e.printStackTrace();
    }
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    </span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; DomCreateTest().createXML();
}

}

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

<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.OutputKeys;
<span style="color: #0000ff;">import
<span style="color: #000000;"> javax.xml.transform.Result;
<span style="color: #0000ff;">import
<span style="color: #000000;"> javax.xml.transform.Transformer;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.TransformerConfigurationException;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.sax.SAXTransformerFactory;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.sax.TransformerHandler;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.xml.transform.stream.StreamResult;

<span style="color: #0000ff;">import<span style="color: #000000;"> org.xml.sax.SAXException;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.xml.sax.helpers.AttributesImpl;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> SAXCreateTest {
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> createXML() {
SAXTransformerFactory factory =<span style="color: #000000;"> (SAXTransformerFactory) SAXTransformerFactory.newInstance();
<span style="color: #0000ff;">try<span style="color: #000000;"> {
TransformerHandler handler =<span style="color: #000000;"> factory.newTransformerHandler();
Transformer transformer =<span style="color: #000000;"> handler.getTransformer();
<span style="color: #008000;">//<span style="color: #008000;"> 设置字符编码
transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8"<span style="color: #000000;">);
<span style="color: #008000;">//<span style="color: #008000;"> 设置换行
transformer.setOutputProperty(OutputKeys.INDENT,"yes"<span style="color: #000000;">);
File file = <span style="color: #0000ff;">new File("books.xml"<span style="color: #000000;">);
<span style="color: #0000ff;">if (!<span style="color: #000000;">file.exists()) file.createNewFile();

        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 创建Result对象 </span>
        Result result = <span style="color: #0000ff;"&gt;new</span> StreamResult(<span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; FileOutputStream(file));
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 和Handler对象相关联</span>

<span style="color: #000000;"> handler.setResult(result);
<span style="color: #008000;">//<span style="color: #008000;"> 利用handler对XML文件内容进行编写
<span style="color: #008000;">//<span style="color: #008000;"> 打开document
<span style="color: #000000;"> handler.startDocument();
<span style="color: #008000;">//<span style="color: #008000;"> 如果没有属性就直接new就可以了
AttributesImpl attr = <span style="color: #0000ff;">new<span style="color: #000000;"> AttributesImpl();
handler.startElement("","","bookStore"<span style="color: #000000;">,attr);

        attr.clear(); 
        attr.addAttribute(</span>"","category","e-sports"<span style="color: #000000;"&gt;);
        handler.startElement(</span>"","book"<span style="color: #000000;"&gt;,attr);

        attr.clear();
        handler.startElement(</span>"","title"<span style="color: #000000;"&gt;,attr);
        handler.characters(</span>"全职高手".toCharArray(),"全职高手"<span style="color: #000000;"&gt;.length());
        handler.endElement(</span>"","title"<span style="color: #000000;"&gt;);

        attr.clear();
        handler.startElement(</span>"","author"<span style="color: #000000;"&gt;,attr);
        handler.characters(</span>"蝴蝶蓝".toCharArray(),"蝴蝶蓝"<span style="color: #000000;"&gt;.length());
        handler.endElement(</span>"","author"<span style="color: #000000;"&gt;);

        handler.endElement(</span>"","book"<span style="color: #000000;"&gt;);

        handler.endElement(</span>"","bookStore"<span style="color: #000000;"&gt;);

        handler.endDocument();

    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (TransformerConfigurationException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IOException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (SAXException e) {
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; TODO Auto-generated catch block</span>

<span style="color: #000000;"> e.printStackTrace();
}
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    </span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; SAXCreateTest().createXML();
}

}

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

<span style="color: #0000ff;">import<span style="color: #000000;"> org.dom4j.Document;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.dom4j.DocumentHelper;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.dom4j.Element;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.dom4j.io.OutputFormat;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.dom4j.io.XMLWriter;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> DOM4JCraeteTest {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; create() {
    Document document </span>=<span style="color: #000000;"&gt; DocumentHelper.createDocument();
    Element bookStore </span>= document.addElement("bookStore"<span style="color: #000000;"&gt;);

    Element book </span>= bookStore.addElement("book"<span style="color: #000000;"&gt;);
    book.addAttribute(</span>"category","e-sport"<span style="color: #000000;"&gt;);

    Element title </span>= book.addElement("title"<span style="color: #000000;"&gt;);
    title.addText(</span>"全职高手"<span style="color: #000000;"&gt;);
    Element author </span>= book.addElement("author"<span style="color: #000000;"&gt;);
    author.addText(</span>"蝴蝶蓝"<span style="color: #000000;"&gt;);
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 设置格式</span>
    OutputFormat format =<span style="color: #000000;"&gt; OutputFormat.createPrettyPrint();
    format.setEncoding(</span>"utf-8"<span style="color: #000000;"&gt;);
    File file </span>= <span style="color: #0000ff;"&gt;new</span> File("books.xml"<span style="color: #000000;"&gt;);
    XMLWriter writer </span>= <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;;
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 设置是否转义  默认为true</span>

    <span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        writer </span>= <span style="color: #0000ff;"&gt;new</span> XMLWriter(<span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; FileOutputStream(file),format);
        writer.setEscapeText(</span><span style="color: #0000ff;"&gt;false</span><span style="color: #000000;"&gt;);
        writer.write(document);
        writer.close();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IOException e) {
        e.printStackTrace();
    }

}


</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    </span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; DOM4JCraeteTest().create();
}

}

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

<span style="color: #0000ff;">import<span style="color: #000000;"> org.jdom2.Document;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.jdom2.Element;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.jdom2.output.Format;
<span style="color: #0000ff;">import
<span style="color: #000000;"> org.jdom2.output.XMLOutputter;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> JDOMCreateTest {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; create() {
    Element bookStore </span>= <span style="color: #0000ff;"&gt;new</span> Element("bookStore"<span style="color: #000000;"&gt;);
    Document document </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Document(bookStore);

    Element book </span>= <span style="color: #0000ff;"&gt;new</span> Element("book"<span style="color: #000000;"&gt;);
    bookStore.addContent(book);
    book.setAttribute(</span>"category","e-sport"<span style="color: #000000;"&gt;);

    Element title </span>= <span style="color: #0000ff;"&gt;new</span> Element("title"<span style="color: #000000;"&gt;);
    title.setText(</span>"全职高手"<span style="color: #000000;"&gt;);
    book.addContent(title);

    Element author </span>= <span style="color: #0000ff;"&gt;new</span> Element("author"<span style="color: #000000;"&gt;);
    book.addContent(author);

    Format format </span>=<span style="color: #000000;"&gt; Format.getCompactFormat();
    format.setIndent(</span>"    "<span style="color: #000000;"&gt;);
    format.setEncoding(</span>"GBK"<span style="color: #000000;"&gt;);

    XMLOutputter outputter </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; XMLOutputter(format);
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        outputter.output(document,</span><span style="color: #0000ff;"&gt;new</span> FileOutputStream(<span style="color: #0000ff;"&gt;new</span> File("books.xml"<span style="color: #000000;"&gt;)));
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (FileNotFoundException e) {
        e.printStackTrace();
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IOException e) {
        e.printStackTrace();
    }

}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    </span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; JDOMCreateTest().create();
}

}

生成文件效果

全职高手

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读