저번 시같에 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샘플 두개를 비교 해보면서 해보시면 쉽게 할 수 있을꺼라 생각됩니다.

저만 그렇게 생각 하는 건가요? ^^;


감사합니다.