본문 바로가기
php

PHP XML 다루기 - XML Reader 를 이용

by [김경민]™ ┌(  ̄∇ ̄)┘™ 2013. 4. 27.
728x90

XML

view source

print?

01.<?xml version="1.0" encoding="UTF-8" ?>

02.<PROVINCE>

03.    <AREA code="1">강원도

04.    <AREA code="2">경기도

05.    <AREA code="3">경상남도

06.    <AREA code="4">경상북도

07.    <AREA code="5">광주광역시

08.    <AREA code="6">대구광역시

09.    <AREA code="7">대전광역시

10.    <AREA code="8">부산광역시

11.    <AREA code="9">서울특별시

12.    <AREA code="10">울산광역시

13.    <AREA code="11">인천광역시

14.    <AREA code="12">전라남도

15.    <AREA code="13">전라북도

16.    <AREA code="14">제주특별자치도

17.    <AREA code="15">충청남도

18.    <AREA code="16">충청북도

19.</PROVINCE>


소스

view source

print?

01./**

02.     * XMLReader 을 이용하여 XML을 다룬다.

03.     *

04.     * 자세한 설명및 레퍼런스는 http://kr.php.net/manual/kr/book.xmlreader.php 를 참고

05.     */

06.     

07.    XMLReader::NONE;        // 노드가 아님

08.    XMLReader::ELEMENT;     // 엘리먼트 시작

09.    XMLReader::ATTRIBUTE;   // 속성 노드

10.    XMLReader::TEXT;        // 텍스트 노드

11.    XMLReader::END_ELEMENT; // 엘리먼트 끝

12.    XMLReader::CDATA;   // 엘리먼트 끝

13.     

14.    $oXml = new XMLReader();    // XMLReader 를 생성시킨다.

15.    $oXml->open('./test.xml');   // 파일을 읽는다.

16.    $arXml = array();   // 임시 배열

17.    while ($oXml->read()) {  // read() false 이 될때까지 loop

18.        switch ($oXml->nodeType) // 노드 타입으로 분기 하여 처리

19.        {

20.            case XMLReader::ELEMENT:    // 노드 타입이 Element일경우

21.                if($oXml->hasAttributes) // attribute 가 있을때

22.                {

23.                    $oXml->moveToNextAttribute();    // next attribute dlehd

24.                    $nCode = (int)$oXml->value;      // attribute를 읽는다.

25.                    /**

26.                     * 현재 예제에서는 attribute 1 (code) 가 있으므로 위와 같이 했지만. attribute가 여러개 일경우

27.                     * $oXml->name 으로 속성을 구분 할 수 있다.

28.                     */

29.                }

30.                $oXml->read();   // 다음노드로 이동

31.                $strValue = trim($oXml->value);  // 값을 읽는다.  (공백,개행문자가 나올수 있으므로 trim시킴)

32.                if(strlen($strValue) > 0)    // 문자길이가 0이상일때

33.                {

34.                    // 임시 배열에 넣는다.

35.                    $arXml[] = array('code' => $nCode, 'value'=> $strValue);

36.                }

37.                break;

38.        }

39.    }

40.    $oXml->close();  // XMLReader 를 닫는다.

41.     

42.    foreach ($arXml as $arElement)

43.    {

44.        echo $arElement['code'];

45.        echo '=>';

46.        echo $arElement['value'];

47.        echo '<BR>';

48.    }


결과
1=>
강원도

2=>
경기도
3=>
경상남도
4=>
경상북도
5=>
광주광역시
6=>
대구광역시
7=>
대전광역시
8=>
부산광역시
9=>
서울특별시
10=>
울산광역시
11=>
인천광역시
12=>
전라남도
13=>
전라북도
14=>
제주특별자치도
15=>
충청남도
16=>
충청북도

 

728x90

댓글