강좌 & 팁
글 수 2,412
2012.06.23 14:58:17 (*.52.177.29)
146388
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로 해보겠습니다.
감사합니다.