StaX (Streaming API for XML) , XML Writing example
xml 태그와 값 그리고 속성을 설정하고 파일에 저장하는 예
import java.io.FileOutputStream;
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 StaXWriter {
private String memFile;
public static void main(String[] args) throws Exception {
StaXWriter writer = new StaXWriter();
writer.setFile("d:/test/members2.xml");
writer.saveMembers();
System.out.println("XML 파일쓰기 완료");
}
public void setFile(String memFile) {
this.memFile = memFile;
}
public void saveMembers() throws Exception {
// create an XMLOutputFactory
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// create XMLEventWriter
XMLEventWriter eventWriter = outputFactory
.createXMLEventWriter(new FileOutputStream(memFile),"euc-kr");
// create an EventFactory
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
// create and write Start Tag
StartDocument startDocument = eventFactory.createStartDocument("euc-kr","1.0");
eventWriter.add(startDocument);
// create members open tag
StartElement memStartElement =
eventFactory.createStartElement("", "", "member");
eventWriter.add(end);
eventWriter.add(memStartElement);
eventWriter.add(eventFactory.createAttribute("birth", "2002-12-05"));
eventWriter.add(end);
// Write the different nodes
createNode(eventWriter, "name", "홍길동");
createNode(eventWriter, "id", "10");
createNode(eventWriter, "phone", "010-8479-6591");
createNode(eventWriter, "email", "hong@naver.com");
eventWriter.add(eventFactory.createEndElement("", "", "member"));
eventWriter.add(end);
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
private void createNode(XMLEventWriter eventWriter, String name,
String value) throws XMLStreamException {
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
XMLEvent tab = eventFactory.createDTD("\t");
// create Start node
StartElement sElement = eventFactory.createStartElement("", "", name);
eventWriter.add(tab);
eventWriter.add(sElement);
// create Content
Characters characters = eventFactory.createCharacters(value);
eventWriter.add(characters);
// create End node
EndElement eElement = eventFactory.createEndElement("", "", name);
eventWriter.add(eElement);
eventWriter.add(end);
}
}