Автор оригинала: Pankaj Kumar.
В прошлом посте мы узнали , как использовать API итератора Java StAX для записи XML, здесь мы будем использовать API курсора StAX для записи XML-файла.
XMLStreamWriter
Java StAX Cursor API очень прост в создании XML и его выводе. Нам нужно создать XMLStreamWriter
объект и записать в него данные. Полезными методами являются writeStartDocument()
, writeStartElement()
, writeCharacters()
, writeEndElement()
и writeEndDocument()
.
Пример XMLStreamWriter
Здесь мы создадим хэш-карту, а затем запишем ее в XML-файл.
package com.journaldev.xml.stax; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.HashMap; import java.util.Map; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; public class StaxXMLStreamWriter { public static void main(String[] args) { String fileName = "/Users/pankaj/tmp/employee.xml"; String rootElement = "Employee"; StaxXMLStreamWriter xmlStreamWriter = new StaxXMLStreamWriter(); MapelementsMap = new HashMap (); elementsMap.put("id", "1"); elementsMap.put("name", "Pankaj"); elementsMap.put("age", "29"); elementsMap.put("role", "Java Developer"); elementsMap.put("gender", "Male"); xmlStreamWriter.writeXML(fileName, rootElement, elementsMap); } private void writeXML(String fileName, String rootElement, Map elementsMap) { XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance(); try{ XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter(new FileOutputStream(fileName), "UTF-8"); //start writing xml file xmlStreamWriter.writeStartDocument("UTF-8", "1.0"); xmlStreamWriter.writeCharacters("\n"); xmlStreamWriter.writeStartElement(rootElement); //write id as attribute xmlStreamWriter.writeAttribute("id", elementsMap.get("id")); //write other elements xmlStreamWriter.writeCharacters("\n\t"); xmlStreamWriter.writeStartElement("name"); xmlStreamWriter.writeCharacters("\n\t\t"+elementsMap.get("name")); xmlStreamWriter.writeCharacters("\n\t"); xmlStreamWriter.writeEndElement(); xmlStreamWriter.writeCharacters("\n\t"); xmlStreamWriter.writeStartElement("age"); xmlStreamWriter.writeCharacters("\n\t\t"+elementsMap.get("age")); xmlStreamWriter.writeCharacters("\n\t"); xmlStreamWriter.writeEndElement(); xmlStreamWriter.writeCharacters("\n\t"); xmlStreamWriter.writeStartElement("gender"); xmlStreamWriter.writeCharacters("\n\t\t"+elementsMap.get("gender")); xmlStreamWriter.writeCharacters("\n\t"); xmlStreamWriter.writeEndElement(); xmlStreamWriter.writeCharacters("\n\t"); xmlStreamWriter.writeStartElement("role"); xmlStreamWriter.writeCharacters("\n\t\t"+elementsMap.get("role")); xmlStreamWriter.writeCharacters("\n\t"); xmlStreamWriter.writeEndElement(); //write end tag of Employee element xmlStreamWriter.writeCharacters("\n"); xmlStreamWriter.writeEndElement(); //write end document xmlStreamWriter.writeEndDocument(); //flush data to file and close writer xmlStreamWriter.flush(); xmlStreamWriter.close(); }catch(XMLStreamException | FileNotFoundException e){ e.printStackTrace(); } } }
Когда мы выполняем приведенный выше пример программы XMLStreamWriter, мы получаем следующий XML-файл.
Pankaj 29 Male Java Developer
Обратите внимание на использование writeCharacters() для довольно печатного XML, иначе он будет в компактном формате.