반응형
<? /** *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; } } // Echo foreach ($arXmlAssoc['Province']['Area'] as $arElement) { echo $arElement['attr']['code']; echo '=>'; echo $arElement['value']; echo '<BR>'; } ?>
반응형
'Programming' 카테고리의 다른 글
문자열 자르는 다양한 방법 (한글,영문구분) (0) | 2011.01.10 |
---|---|
자주 사용 하는 함수 모음 (0) | 2011.01.10 |
PHP 제어문 정리 (0) | 2011.01.10 |
PHP 연산자 정리 (0) | 2011.01.10 |
xml2array (0) | 2011.01.10 |