Java에는 다양한 XML 파서를 이용할 수 있습니다. 그중에 DOM이 가장 직관적이고 쉬운 방법으로 XML을 처리할 수 있지 않을까 생각됩니다. DOM을 이용하여 XML을 생성하기 위해서는 기본적으로 모든 XML의 내용을 정의할 수 있는 Document를 생성해야 하는데요 이것을 생성하기 위해 DocumentBuilder 클래스를 사용합니다.
마지막으로 만들어진 XML 엘리먼트 노드들이 연결된 Document를 가지고 XML 파일을 생성하는데 이때에 Transformer 클래스를 사용합니다.
DOM Parser 결과물
이 예제를 수행하게 되면 다음의 같은 내용을 가진 file.xml 파일이 생성됩니다.
[code]<?xml version=”1.0″ encoding=”UTF-8″ standalone=”no” ?> 
<company>
	<staff id=”1″>
		<firstname>Gildong</firstname>
		<lastname>Hong</lastname>
		<nickname>Mr.Hong</nickname>
		<salary>100000</salary>
	</staff>
</company>[/code]
Java 클래스 소스
[code]try
{
	DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
	DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
	// 루트 엘리먼트
	Document doc = docBuilder.newDocument();
	Element rootElement = doc.createElement(“company”);
	doc.appendChild(rootElement);
	// staff 엘리먼트
	Element staff = doc.createElement(“Staff”);
	rootElement.appendChild(staff);
	// 속성값 정의
	Attr attr = doc.createAttribute(“id”);
	attr.setValue(“1”);
	staff.setAttributeNode(attr);
	// 속성값을 정의하는 더 쉬운 방법
	// staff.setAttribute(“id”, “1”);
	// firstname 엘리먼트
	Element firstname = doc.createElement(“firstname”);
	firstname.appendChild(doc.createTextNode(“Gildong”));
	staff.appendChild(firstname);
	// lastname 엘리먼트
	Element lastname = doc.createElement(“lastname”);
	lastname.appendChild(doc.createTextNode(“Hong”));
	staff.appendChild(lastname);
	// nickname 엘리먼트
	Element nickname = doc.createElement(“nickname”);
	nickname.appendChild(doc.createTextNode(“Mr.Hong”));
	staff.appendChild(nickname);
	// salary 엘리먼트
	Element salary = doc.createElement(“salary”);
	salary.appendChild(doc.createTextNode(“100000”));
	staff.appendChild(salary);
	// XML 파일로 쓰기
	TransformerFactory transformerFactory = TransformerFactory.newInstance();
	Transformer transformer = transformerFactory.newTransformer();
	transformer.setOutputProperty(OutputKeys.ENCODING, “UTF-8”);
	transformer.setOutputProperty(OutputKeys.INDENT, “yes”);	DOMSource source = new DOMSource(doc);
	StreamResult result = new StreamResult(new FileOutputStream(new File(“C:\\file.xml”)));
	// 파일로 쓰지 않고 콘솔에 찍어보고 싶을 경우 다음을 사용 (디버깅용)
	// StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
	System.out.println(“File saved!”);
}
catch (ParserConfigurationException pce)
{
	pce.printStackTrace();
}
catch (TransformerException tfe)
{
	tfe.printStackTrace();
}[/code]