자바에서 XML다루기(2) - Document
JAVA에서 XML을 다루기 위해 가장 기본적으로 사용되는 Document객체를 통해 설명 드리겠습니다.
구구절절한 설명보다 소스 및 핵심만 설명 하겠습니다.
좀 더 쉬운 이해를 하려면 자료구조의 tree를 이해하셔야 합니다.
1. JAVA에서 로컬PC에 있는 test.xml 파일 읽기
(1) test.xml의 위치 : D:\test.xml
(2) test.xml 내용
<header>
<person>
<name>eric</name>
<phone>01012345678</phone>
</person>
<person>
<name>joshep</name>
<phone>01087654321</phone>
</person>
</header>
(3) Source
// xml파일을 Document객체로 불러오기 위한 작업
DocumentBuilderFactory docuFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = docuFactory.newDocumentBuilder();
Document document = builder.parse(new File("D:\\test.xml"));
2. Document 객체로 노드 읽기
(1) XML 노드 객체
- NodeList : document객체의 getElementsByTagName(String nodeName) 객체를 통해 가져옴.
※ 만약 getElementsByTagName("header")를 호출하면 NodeList의 0번째 index에는 header노드가 있다.
이와 달게 getElementsByTagName("person")을 호출하면 0번째 index에는 첫번째 person노드가
1번째 index에는 두번째 person노드가 들어있음.
모든 노드를 불러오고 싶으면 getElementsByTagName("*") 를 사용함
- Element : xml내의 태그를 가져옴
ex) <header>, <person>, <name>, <phone>
- Node : 각 태그의 Value 값을 가져온다.
ex) eric, 01012345678 등
(2) Source
//name노드의 이름과 value를 출력하는 소스
public void printDocument(){
NodeList list = document.getElementsByTagName("name");
Element name1 = (Element)list.item(0);
Node nameVal1 = name1.getFirstChild();
System.out.println(name1.getNodeName()+":"+nameVal1.getNodeValue());
Element name2 = (Element)list.item(1);
Node nameVal2 = name2.getFirstChild();
System.out.println(name2.getNodeName()+":"+nameVal2.getNodeValue());
}
(3) 소스 설명
- getElementsByTagName("name")으로 list의 0번째, 1번째 index에는 각각의 name 태그가 들어가 있다.
name태그를 불러오기 위해 Element name1, name2를 활용하였고 해당 태그에 있는 값을 가져오기 위해
nameVal1, nameVal2 를 이용하였다. 위 소스를 출력하면
name:eric
name:joshep
위처럼 두개의 이름이 나온다.
(4) XML트리구조
test.xml을 Document객체로 읽게되면 위 그림처럼 Document객체 내에 저장됩니다.
이를 활용하기 위해 소스처럼 getElementsByName(String node), getNodeName(), getNodeValue()를 사용하면 됩니다.
'IT > Java' 카테고리의 다른 글
[API] FileUtils (0) | 2019.06.25 |
---|---|
BubbleSort 및 ArrayList, String API 요약 (0) | 2018.05.08 |
객체지향언어 및 객체 개념 (0) | 2015.11.13 |
Java Compile 에러 모음 (0) | 2015.11.12 |
자바에서 XML다루기(1) (0) | 2015.11.11 |