Java에서 Xml파일 읽는 예제 샘플 소스입니다.

구글 검색해보면 많이 나오겠지만, 2주에 걸쳐 두가지 샘플을 올려보도록 하겠습니다.

그 첫번째 입니다.


addressbook.xml

<?xml version="1.0" encoding="utf-8" ?>
<addressbook>
	<person>
		<name>이XX</name>
		<tel>010-1245-1234</tel>
		<address>서울</address>
	</person>
	<person>
		<name>김XX</name>
		<tel>010-1245-1234</tel>
		<address>경기</address>
	</person>
</addressbook>

위와 같이 xml은 태그 형식으로만 되어 있는 간단한 형식입니다.


그다음은 자바 코드입니다.

Java샘플 코드(XmlReaderExample.java)

import java.io.File;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
public class XmlReaderExample {
 
	public static void main(String argv[]) {
 
		try {
			File file = new File("./addressbook.xml");
			DocumentBuilderFactory docBuildFact = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuild = docBuildFact.newDocumentBuilder();
			Document doc = docBuild.parse(file);
			doc.getDocumentElement().normalize();
 
			System.out.println("Root element : " + doc.getDocumentElement().getNodeName());
			System.out.println();
 
			// person엘리먼트 리스트
			NodeList personlist = doc.getElementsByTagName("person");
 
			for (int i = 0; i < personlist.getLength(); i++) {
 
				System.out.println("---------- personNode "+ i + "번째 ------------------");
 
				Node personNode = personlist.item(i);
 
				if (personNode.getNodeType() == Node.ELEMENT_NODE) {
					// person엘리먼트 
					Element personElmnt = (Element) personNode;
 
					// name 태그
					NodeList nameList= personElmnt.getElementsByTagName("name");
					Element nameElmnt = (Element) nameList.item(0);
					Node name = nameElmnt.getFirstChild();
					System.out.println("name    : " + name.getNodeValue());
 
					// tel 태그
					NodeList telList= personElmnt.getElementsByTagName("tel");
					Element telElmnt = (Element) telList.item(0);
					Node tel = telElmnt.getFirstChild();
					System.out.println("tel     : " + tel.getNodeValue());
 
					// address 태그
					NodeList addressList= personElmnt.getElementsByTagName("address");
					Element addressElmnt = (Element) addressList.item(0);
					Node address = addressElmnt.getFirstChild();
					System.out.println("address : " + address.getNodeValue());
				}
 
				System.out.println("---------------------------------------------");
				System.out.println();
			}
 
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


저도 처음에 다른 xml샘플 소스를 봤을땐 이게 뭔가 싶었는데....

이것만 봤을때는 좀 이해가 잘 가지 않았습니다.

근데 이게 젤 쉬운 샘플 코드입니다. ^^;

조금 설명 하자면...

personlist는 태그가 person이라는 태그로 시작해서 끝나는 person태그의 리스트를 말합니다.

person태그 안에는 다시 name태그, tel태그, adress태그가 들어있어서 그것들을 빼내오는 겁니다.

정말, 간단하죠.... ^^;



실행결과는 다음과 같습니다.

Root element : addressbook

---------- personNode 0번째 ------------------
name    : 이XX
tel     : 010-1245-1234
address : 서울
---------------------------------------------

---------- personNode 1번째 ------------------
name    : 김XX
tel     : 010-1245-1234
address : 경기
---------------------------------------------


다음 시간에는 조금 다른 케이스의 xml로 해보겠습니다.

감사합니다.