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
GeekAuthorDetailsStaxXMLWriter {
public
static
void
main(String[] args) {
String geekAuthorFileName =
"geekauthordetails.xml"
;
String rootElement =
"GeekAuthors"
;
GeekAuthorDetailsStaxXMLWriter staxXMLWriter =
new
GeekAuthorDetailsStaxXMLWriter();
Map<String,String> geekAuthorDetailsElementsMap =
new
HashMap<String, String>();
geekAuthorDetailsElementsMap.put(
"authorName"
,
"GeekA"
);
geekAuthorDetailsElementsMap.put(
"authorAge"
,
"30"
);
geekAuthorDetailsElementsMap.put(
"articlesPublishedIn"
,
"Java,Python,Database"
);
geekAuthorDetailsElementsMap.put(
"gender"
,
"Female"
);
staxXMLWriter.writeXML(geekAuthorFileName, rootElement, geekAuthorDetailsElementsMap);
}
public
void
writeXML(String geekAuthorFileName, String rootElement, Map<String, String> geekAuthorDetailsElementsMap){
XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
try
{
XMLEventWriter xmlEventWriter = xmlOutputFactory
.createXMLEventWriter(
new
FileOutputStream(geekAuthorFileName),
"UTF-8"
);
XMLEventFactory xmlEventFactory = XMLEventFactory.newInstance();
XMLEvent endIt = xmlEventFactory.createDTD(
"\n"
);
StartDocument startDocument = xmlEventFactory.createStartDocument();
xmlEventWriter.add(startDocument);
xmlEventWriter.add(endIt);
StartElement configuredStartElement = xmlEventFactory.createStartElement(
""
,
""
, rootElement);
xmlEventWriter.add(configuredStartElement);
xmlEventWriter.add(endIt);
Set<String> elementNodes = geekAuthorDetailsElementsMap.keySet();
for
(String key : elementNodes){
createNode(xmlEventWriter, key, geekAuthorDetailsElementsMap.get(key));
}
xmlEventWriter.add(xmlEventFactory.createEndElement(
""
,
""
, rootElement));
xmlEventWriter.add(endIt);
xmlEventWriter.add(xmlEventFactory.createEndDocument());
xmlEventWriter.close();
}
catch
(FileNotFoundException | XMLStreamException e) {
e.printStackTrace();
}
}
private
static
void
createNode(XMLEventWriter eventWriter, String keyElement,
String geekAuthorDetailsElementsMapValue)
throws
XMLStreamException {
XMLEventFactory xmlEventFactory = XMLEventFactory.newInstance();
XMLEvent endElement = xmlEventFactory.createDTD(
"\n"
);
XMLEvent tabElement = xmlEventFactory.createDTD(
"\t"
);
StartElement startElement = xmlEventFactory.createStartElement(
""
,
""
, keyElement);
eventWriter.add(tabElement);
eventWriter.add(startElement);
Characters characters = xmlEventFactory.createCharacters(geekAuthorDetailsElementsMapValue);
eventWriter.add(characters);
EndElement endingElement = xmlEventFactory.createEndElement(
""
,
""
, keyElement);
eventWriter.add(endingElement);
eventWriter.add(endElement);
}
}