강좌 & 팁
글 수 2,412
2012.07.01 10:13:43 (*.52.177.29)
41364
저번 시같에 xml파일 읽기를 해봤습니다.
이번 시간은 저번과 좀 다른 xml을 가지고 샘플을 만들어 봤습니다.
xml은 다음과 같습니다. (comboBox.xml)
<?xml version="1.0" encoding="utf-8" ?> <combolist> <comboBox name="sex"> <option value="1">남</option> <option value="2">여</option> </comboBox> <comboBox name="hobby"> <option value="1">음악감상</option> <option value="2">영화보기</option> <option value="3">축구</option> <option value="4">야구</option> <option value="5">골프</option> <option value="6">기타</option> </comboBox> </combolist>
저번 시간의 xml과 틀린점은
저번시간 xml에는 태그만 있었지만, 위xml에는 태그안에 속성이 들어 있는게 틀린점입니다.
comboBox name과 option value가 속성입니다.
그럼, 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 XmlReaderExample2 { public static void main(String argv[]) { try { File file = new File("./comboBox.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(); // comboBox엘리먼트 리스트 NodeList comboBoxlist = doc.getElementsByTagName("comboBox"); for (int i = 0; i < comboBoxlist.getLength(); i++) { System.out.println("---------- comboBoxNode "+ i + "번째 ------------------"); Node comboBoxNode = comboBoxlist.item(i); if (comboBoxNode.getNodeType() == Node.ELEMENT_NODE) { // comboBox엘리먼트 Element comboBoxElmnt = (Element) comboBoxNode; // 콤보박스 명 System.out.println("comboBox name : " + comboBoxElmnt.getAttribute("name")); // option 태그 NodeList optList= comboBoxElmnt.getElementsByTagName("option"); for (int j = 0; j < optList.getLength(); j++) { Element optElmnt = (Element) optList.item(j); Node name = optElmnt.getFirstChild(); System.out.println("option : " + name.getNodeValue() + " value : " +optElmnt.getAttribute("value")); } } System.out.println("---------------------------------------------"); System.out.println(); } } catch (Exception e) { e.printStackTrace(); } } }
Java코드도 저번시간과 거의 비슷하지만, 속성값을 취득하는 comboBoxElmnt.getAttribute("name"), optElmnt.getAttribute("value") 부분이 추가 되었습니다.
실행결과는 다음과 같습니다.
[실행결과]
Root element : combolist ---------- comboBoxNode 0번째 ------------------ comboBox name : sex option : 남 value : 1 option : 여 value : 2 --------------------------------------------- ---------- comboBoxNode 1번째 ------------------ comboBox name : hobby option : 음악감상 value : 1 option : 영화보기 value : 2 option : 축구 value : 3 option : 야구 value : 4 option : 골프 value : 5 option : 기타 value : 6 ---------------------------------------------
저번 시간의 Java샘플과 이번 시간의 Java샘플 두개를 비교 해보면서 해보시면 쉽게 할 수 있을꺼라 생각됩니다.
저만 그렇게 생각 하는 건가요? ^^;
감사합니다.