Boolean.TRUE);
f.setProperty(XMLOutputFactory2.P_AUTOMATIC_EMPTY_ELEMENTS,
Boolean.TRUE);
Writer w = new PrintWriter(System.out);
XMLEventWriter ew = f.createXMLEventWriter(w);
XMLEventFactory evtF = new WstxEventFactory();
ew.add(evtF.createStartDocument("UTF-8", "1.1", true));
ew.add(evtF.createComment("Comment!"));
ew.add(evtF.createCharacters("\n"));
ew.add(evtF.createStartElement(new QName("http://mydomain", "root"),
null, null));
// Need to first create ns & attrs for next element:
ArrayList<Attribute> attrs = new ArrayList<Attribute>();
attrs.add(evtF.createAttribute(new QName("attr"), "value"));
attrs.add(evtF.createAttribute(new QName("http://attr-prefix", "aptr", "attr"), "value"));
attrs.add(evtF.createAttribute(new QName("http://attr-prefix", "attr3"), "value!"));
attrs.add(evtF.createAttribute(new QName("another"), "this & that"));
//attrs.add(evtF.createAttribute(new QName("attr"), "whatever"); // error
ArrayList<Namespace> ns = new ArrayList<Namespace>();
ns.add(evtF.createNamespace("http://default")); // error if not output
ns.add(evtF.createNamespace("myprefix", "http://mydotcom")); // - "" -
ew.add(evtF.createStartElement(new QName("elem"),
attrs.iterator(), ns.iterator()));
ew.add(evtF.createCharacters("Sub-text"));
ew.add(evtF.createEndElement(new QName("elem"), null));
//ew.add(evtF.createEndElement(new QName("elem3:foo"), null));
ew.add(evtF.createStartElement(new QName("elem3"), null, null));
ew.add(evtF.createEndElement(new QName("elem3"), null));
// Let's create more namespaces...
ew.add(evtF.createStartElement(new QName("http://attr-prefix", "branch"), null, null));
// Comment out to test that close() works...
/*
ew.add(evtF.createCharacters("Root text <> ]]>\n"));
ew.add(evtF.createEndElement(new QName("root"), null));