반응형

xml로 작업을 할것이 있어서 찾던중 다른분이 만든것을 찾게 되어서 해당자료를 올려놓는다.

출처 : http://www.cyworld.com/bomnarain/9362771


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

<PROVINCE>

<AREA code="1">강원도</AREA> 

<AREA code="2">경기도</AREA> 

<AREA code="3">경상남도</AREA> 

<AREA code="4">경상북도</AREA> 

<AREA code="5">광주광역시</AREA> 

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

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

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

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

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

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

<AREA code="12">전라남도</AREA> 

<AREA code="13">전라북도</AREA> 

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

<AREA code="15">충청남도</AREA> 

<AREA code="16">충청북도</AREA>

</PROVINCE>

 

=========================================================================================

/**

*XML Parser 을 이용하여 XML을 다룬다. 

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

*/

$rXml = xml_parser_create(); // xml 파서를 생성시킨다. 

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

$strXml = ''; // xml의 내용을 저장할 변수

/**

* file_get_contents 등의 파일 내용을 읽는 여러 함수를 이용할 수 있다. 

*/

$fp = fopen('./test.xml', 'r'); // xml 파일을 읽는다. 

if($fp) // 정상적으로 파일이 열렸다면 

{

while (!feof($fp)) { // EOF가 될때까지

$strXml .= fread($fp, 1024); // 1024 바이트씩 읽어서 임시 변수에 넣는다.

}

fclose($fp); // 파일을 닫는다.

}

xml_parser_set_option($rXml, XML_OPTION_CASE_FOLDING, 0); // 대문자로 변경 (기본이 enable이라 disable함)

xml_parser_set_option($rXml, XML_OPTION_SKIP_WHITE, 1); // 공백값을 무시힌다. 

xml_parse_into_struct($rXml, $strXml, $arXml); // 읽어들인 XML을 이용해서 배열에 XML구조를 담는다.

xml_parser_free($rXml);

$strNodeKey = null;

$arXmlAssoc = array();

// 연관배열 형식으로 하기 위해서 아래와 같이 처리

foreach ($arXml as $key => $arNode)

{

switch ($arNode['type'])

{

case 'open':

$strNodeKey = $arNode['tag'];

$arXmlAssoc[$arNode['tag']];

break;

case 'complete':

if(is_array($arNode['attributes']))

{

$arXmlAssoc[$strNodeKey][$arNode['tag']][] = array('attr' => $arNode['attributes'], 'value' => $arNode['value']);

}

else 

{

$arXmlAssoc[$strNodeKey][$arNode['tag']][] = $arNode['value'];

}

break;

case 'close':

$nOpenNodeKey = null;

break;

}

}

foreach ($arXmlAssoc['Province']['Area'] as $arElement)

{

echo $arElement['attr']['code'];

echo '=>';

echo $arElement['value'];

echo '<BR>';

}

 

 

 

 

=========================================================================================

결과 

1=>강원도

2=>경기도

3=>경상남도

4=>경상북도

5=>광주광역시

6=>대구광역시

7=>대전광역시

8=>부산광역시

9=>서울특별시

10=>울산광역시

11=>인천광역시

12=>전라남도

13=>전라북도

14=>제주특별자치도

15=>충청남도

16=>충청북도 


출처 : http://www.cyworld.com/bomnarain/9362771

반응형

'프로그래밍 > PHP' 카테고리의 다른 글

[PHP] 이전 웹주소 처리  (0) 2014.05.14
[PHP] 특정문자 제거.  (0) 2014.05.14
[PHP] XML 다루기 - XMLReader  (0) 2012.07.24
[PHP] intval()함수  (0) 2011.11.08
[PHP] str_pad 공간 채워넣기.  (0) 2011.07.25
반응형

xml로 작업을 할것이 있어서 찾던중 다른분이 만든것을 찾게 되어서 해당자료를 올려놓는다.

출처 : http://www.cyworld.com/bomnarain/9362777


<?xml version="1.0" encoding="UTF-8" ?> 
<PROVINCE>
	<AREA code="1">강원도</AREA> 
	<AREA code="2">경기도</AREA> 
	<AREA code="3">경상남도</AREA> 
	<AREA code="4">경상북도</AREA> 
	<AREA code="5">광주광역시</AREA> 
	<AREA code="6">대구광역시</AREA> 
	<AREA code="7">대전광역시</AREA> 
	<AREA code="8">부산광역시</AREA> 
	<AREA code="9">서울특별시</AREA> 
	<AREA code="10">울산광역시</AREA> 
	<AREA code="11">인천광역시</AREA> 
	<AREA code="12">전라남도</AREA> 
	<AREA code="13">전라북도</AREA> 
	<AREA code="14">제주특별자치도</AREA> 
	<AREA code="15">충청남도</AREA> 
	<AREA code="16">충청북도</AREA>
</PROVINCE>
=========================================================================================
/**
 * XMLReader 을 이용하여 XML을 다룬다.
 *
 * 자세한 설명및 레퍼런스는 http://kr.php.net/manual/kr/book.xmlreader.php 를 참고
 */
XMLReader::NONE;  // 노드가 아님
XMLReader::ELEMENT;  // 엘리먼트 시작
XMLReader::ATTRIBUTE; // 속성 노드
XMLReader::TEXT;  // 텍스트 노드
XMLReader::END_ELEMENT; // 엘리먼트 끝
XMLReader::CDATA; // 엘리먼트 끝
$oXml = new XMLReader(); // XMLReader 를 생성시킨다.
$oXml->open('./test.xml'); // 파일을 읽는다.
$arXml = array(); // 임시 배열
while ($oXml->read()) { // read() 가 false 이 될때까지 loop
 switch ($oXml->nodeType) // 노드 타입으로 분기 하여 처리
 {
  case XMLReader::ELEMENT: // 노드 타입이 Element일경우
   if($oXml->hasAttributes) // attribute 가 있을때
   {
    $oXml->moveToNextAttribute(); // next attribute 로 dlehd
    $nCode = (int)$oXml->value;  // attribute를 읽는다.
    /**
     * 현재 예제에서는 attribute 가 1개 (code) 가 있으므로 위와 같이 했지만. attribute가 여러개 일경우
     * $oXml->name 으로 속성을 구분 할 수 있다.
     */
   }
   $oXml->read(); // 다음노드로 이동
   $strValue = trim($oXml->value); // 값을 읽는다.  (공백,개행문자가 나올수 있으므로 trim시킴)
   if(strlen($strValue) > 0) // 문자길이가 0이상일때
   {
    // 임시 배열에 넣는다.
    $arXml[] = array('code' => $nCode, 'value'=> $strValue);
   }
   break;
 }
}
$oXml->close(); // XMLReader 를 닫는다.
foreach ($arXml as $arElement)
{
 echo $arElement['code'];
 echo '=>';
 echo $arElement['value'];
 echo '<BR>';
}
========================================================================================
결과 
1=>강원도
2=>경기도
3=>경상남도
4=>경상북도
5=>광주광역시
6=>대구광역시
7=>대전광역시
8=>부산광역시
9=>서울특별시
10=>울산광역시
11=>인천광역시
12=>전라남도
13=>전라북도
14=>제주특별자치도
15=>충청남도
16=>충청북도

출처 : http://www.cyworld.com/bomnarain/9362777

반응형

'프로그래밍 > PHP' 카테고리의 다른 글

[PHP] 특정문자 제거.  (0) 2014.05.14
[PHP] XML 다루기 - XML Parser  (0) 2012.07.25
[PHP] intval()함수  (0) 2011.11.08
[PHP] str_pad 공간 채워넣기.  (0) 2011.07.25
[PHP] 쿠키(cookie)  (0) 2011.07.22

+ Recent posts