php4 에서는 기본적으로 xml 데이터를 바로 접근하여 쓸 수 없다.

다행히도 PHP 확장으로 XML Parser 함수를 사용할 수 있는데,

이 함수들은 번들된 expat 라이브러리를 이요하여 기본값으로 활성화 되어 있기 때문에

php 에서 특별한 설정 없이 php 기본컴파일 한 것만으로 바로 사용할 수 있다.

만일, 비활성화 하려면 옵션에서 --disable-xml  을 사용하면 된다.

아래는 코드이다.

<?
/**
  * @brief  XML >> PHP Array Parser Program
  */
$oFile = "data.xml" ;
$xml_parser = xml_parser_create() ;

if( !($fp = fopen($oFile, "r")) )
{
        die("could not open XML input") ;
}

$aData = fread($fp, filesize($oFile)) ;
fclose($fp) ;
xml_parse_into_struct($xml_parser, $aData, $vals, $index) ;
xml_parser_free($xml_parser) ;

$aXML2PhpData   = array() ;
$level  = array() ;
foreach($vals as $xml_elem)
{
    if( $xml_elem['type'] == 'open' )
    {
        if( array_key_exists('attributes',$xml_elem) )
        {
            list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']) ;
        }
        else
        {
            $level[$xml_elem['level']] = $xml_elem['tag'] ;
        }
    }
    if( $xml_elem['type'] == 'complete' )
    {
        $start_level = 1 ;
        $php_stmt = '$aXML2PhpData' ;
        while( $start_level < $xml_elem['level'] )
        {
            $php_stmt .= '[$level['.$start_level.']]' ;
            $start_level++ ;
        }
        $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];' ;
        eval($php_stmt) ;
    }
}
print "<pre>" ;

print_r ($aXML2PhpData) ;
print "<pre>" ;

?>



출처 : http://kr.php.net/manual/kr/function.xml-parser-create.php

신고

'PHP' 카테고리의 다른 글

b2zip 라이브러리 이용 PHP 압축하기  (0) 2010.02.01
phpMyAdmin 설치  (0) 2010.01.31
PHP 4.X, 5.X XML Parser  (0) 2010.01.28
PHP4 에서 XML 데이터를 php 배열로 가져가 쓰는 방법  (0) 2010.01.28

+ Recent posts

티스토리 툴바