본문 바로가기

IT/Java

자바에서 XML다루기(2)

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

자바에서 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