100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java xml stax_如何使用Java StAX Iterator API用Java编写XML文件

java xml stax_如何使用Java StAX Iterator API用Java编写XML文件

时间:2019-02-14 14:44:24

相关推荐

java xml stax_如何使用Java StAX Iterator API用Java编写XML文件

java xml stax

Java Streaming API for XML or Java StAX API was introduced in Java 6 and considered superior to DOM and SAX parsers. As explained in earlier post about Java StAX API, it consists of cursor-based API and iterator based API.

Java 6中引入了用于XML的Java Streaming API或Java StAX API,它被认为优于DOM和SAX解析器。 如先前有关Java StAX API的文章所述 ,它由基于游标的API和基于迭代器的API组成。

Here we will see how we can write XML file in java using StAX Iterator based API (XMLEventWriter).

在这里,我们将看到如何使用基于StAX Iterator的API(XMLEventWriter)在Java中编写XML文件。

package com.journaldev.xml;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.util.HashMap;import java.util.Map;import java.util.Set;import javax.xml.stream.XMLEventFactory;import javax.xml.stream.XMLEventWriter;import javax.xml.stream.XMLOutputFactory;import javax.xml.stream.XMLStreamException;import javax.xml.stream.events.Characters;import javax.xml.stream.events.EndElement;import javax.xml.stream.events.StartDocument;import javax.xml.stream.events.StartElement;import javax.xml.stream.events.XMLEvent;public class StaxXMLWriter {public static void main(String[] args) {String fileName = "/Users/pankaj/employee.xml";String rootElement = "Employee";StaxXMLWriter xmlWriter = new StaxXMLWriter();Map<String,String> elementsMap = new HashMap<String, String>();elementsMap.put("name", "Pankaj");elementsMap.put("age", "29");elementsMap.put("role", "Java Developer");elementsMap.put("gender", "Male");xmlWriter.writeXML(fileName, rootElement, elementsMap);}public void writeXML(String fileName, String rootElement, Map<String, String> elementsMap){XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();try {XMLEventWriter xmlEventWriter = xmlOutputFactory.createXMLEventWriter(new FileOutputStream(fileName), "UTF-8");//For Debugging - below code to print XML to Console//XMLEventWriter xmlEventWriter = xmlOutputFactory.createXMLEventWriter(System.out);XMLEventFactory eventFactory = XMLEventFactory.newInstance();XMLEvent end = eventFactory.createDTD("\n");StartDocument startDocument = eventFactory.createStartDocument();xmlEventWriter.add(startDocument);xmlEventWriter.add(end);StartElement configStartElement = eventFactory.createStartElement("","", rootElement);xmlEventWriter.add(configStartElement);xmlEventWriter.add(end);// Write the element nodesSet<String> elementNodes = elementsMap.keySet();for(String key : elementNodes){createNode(xmlEventWriter, key, elementsMap.get(key));}xmlEventWriter.add(eventFactory.createEndElement("", "", rootElement));xmlEventWriter.add(end);xmlEventWriter.add(eventFactory.createEndDocument());xmlEventWriter.close();} catch (FileNotFoundException | XMLStreamException e) {e.printStackTrace();}}private static void createNode(XMLEventWriter eventWriter, String element,String value) throws XMLStreamException {XMLEventFactory xmlEventFactory = XMLEventFactory.newInstance();XMLEvent end = xmlEventFactory.createDTD("\n");XMLEvent tab = xmlEventFactory.createDTD("\t");//Create Start nodeStartElement sElement = xmlEventFactory.createStartElement("", "", element);eventWriter.add(tab);eventWriter.add(sElement);//Create ContentCharacters characters = xmlEventFactory.createCharacters(value);eventWriter.add(characters);// Create End nodeEndElement eElement = xmlEventFactory.createEndElement("", "", element);eventWriter.add(eElement);eventWriter.add(end);}}

Above program creates below XML file:

上面的程序创建下面的XML文件:

employee.xml

employee.xml

<?xml version="1.0" encoding="UTF-8"?><Employee><age>29</age><name>Pankaj</name><gender>Male</gender><role>Java Developer</role></Employee>

I have used\nand\telements to create the formatted XML but to save memory and reduce processing time, you can remove them from the implementation.

我曾使用\ n和\ t元素来创建格式化的XML,但是为了节省内存并减少处理时间,您可以将它们从实现中删除。

Also for debugging purpose, you can change the output stream toSystem.outto print the XML file to console.

同样出于调试目的,您可以将输出流更改为System.out以将XML文件打印到控制台。

翻译自: /892/how-to-write-xml-file-in-java-using-java-stax-api

java xml stax

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。