XmlParser 클래스 참조

xmlrpc를 해석하여 object로 return 하는 simple xml parser 더 자세히 ...

XmlParser에 대한 상속 다이어그램 :
Inheritance graph

모든 멤버 목록

Public 멤버 함수

 loadXmlFile ($filename)
 xml 파일을 로딩하여 parsing 처리 후 return
 parse ($input= '')
 xml 파싱
 _tagOpen ($parser, $node_name, $attrs)
 태그 오픈
 _tagBody ($parser, $body)
 body 내용
 _tagClosed ($parser, $node_name)
 태그 닫음
 _arrToObj ($arr)
 파싱한 결과를 object vars에 담기 위한 method

Public 속성

 $oParser = NULL
 xml parser
 $input = NULL
 input xml
 $output = array()
 output object
 $lang = "en"
 기본 언어타입

상세한 설명

xmlrpc를 해석하여 object로 return 하는 simple xml parser

작성자:
zero (zero@nzeo.com)
버전:
0.1

xml 데이터의 attribute중에 xml:lang="ko,en,ch,jp,..." 이 있을 경우 지정된 lang 값에 해당하는 것만 남기는 트릭이 적용됨. 무슨 문제를 일으킬지는 현재 모르나 잘 동작하고 있음

XmlParser.class.php 파일의 12 번째 라인에서 정의되었습니다.


멤버 함수 문서화

XmlParser::_arrToObj ( arr  ) 

파싱한 결과를 object vars에 담기 위한 method

XmlParser.class.php 파일의 125 번째 라인에서 정의되었습니다.

다음을 참조함 : $output.

다음에 의해서 참조됨 : _tagOpen().

00125                                  {
00126             if(!count($arr)) return;
00127             foreach($arr as $key => $val) {
00128                 $key = strtolower($key);
00129                 $output->{$key} = $val;
00130             }
00131             return $output;
00132         }

XmlParser::_tagBody ( parser,
body 
)

body 내용

XmlParser.class.php 파일의 93 번째 라인에서 정의되었습니다.

00093                                           {
00094             //if(!trim($body)) return;
00095             $this->output[count($this->output)-1]->body .= $body;
00096         }

XmlParser::_tagClosed ( parser,
node_name 
)

태그 닫음

XmlParser.class.php 파일의 101 번째 라인에서 정의되었습니다.

00101                                                  {
00102             $node_name = strtolower($node_name);
00103             $cur_obj = array_pop($this->output);
00104             $parent_obj = &$this->output[count($this->output)-1];
00105             if($this->lang&&$cur_obj->attrs->{'xml:lang'}&&$cur_obj->attrs->{'xml:lang'}!=$this->lang) return;
00106             if($this->lang&&$parent_obj->{$node_name}->attrs->{'xml:lang'}&&$parent_obj->{$node_name}->attrs->{'xml:lang'}!=$this->lang) return;
00107 
00108             if($parent_obj->{$node_name}) {
00109                 $tmp_obj = $parent_obj->{$node_name};
00110                 if(is_array($tmp_obj)) {
00111                     array_push($parent_obj->{$node_name}, $cur_obj);
00112                 } else {
00113                     $parent_obj->{$node_name} = array();
00114                     array_push($parent_obj->{$node_name}, $tmp_obj);
00115                     array_push($parent_obj->{$node_name}, $cur_obj);
00116                 }
00117             } else {
00118                 $parent_obj->{$node_name} = $cur_obj;
00119             }
00120         }

XmlParser::_tagOpen ( parser,
node_name,
attrs 
)

태그 오픈

XmlParser.class.php 파일의 83 번째 라인에서 정의되었습니다.

다음을 참조함 : _arrToObj().

00083                                                        {
00084             $obj->node_name = strtolower($node_name);
00085             $obj->attrs = $this->_arrToObj($attrs);
00086 
00087             array_push($this->output, $obj);
00088         }

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

XmlParser::loadXmlFile ( filename  ) 

xml 파일을 로딩하여 parsing 처리 후 return

XmlParser.class.php 파일의 24 번째 라인에서 정의되었습니다.

다음을 참조함 : $oXmlParser, FileHandler::readFile().

다음에 의해서 참조됨 : moduleModel::getModuleActionXml().

00024                                         {
00025             if(!file_exists($filename)) return;
00026             $buff = FileHandler::readFile($filename);
00027 
00028             $oXmlParser = new XmlParser();
00029             return $oXmlParser->parse($buff);
00030         }

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

XmlParser::parse ( input = ''  ) 

xml 파싱

XmlParser.class.php 파일의 35 번째 라인에서 정의되었습니다.

다음을 참조함 : $GLOBALS, $input, $output, Context::getLangType(), getMicroTime().

다음에 의해서 참조됨 : XmlJsFilter::_compile().

00035                                     {
00036             // 디버그를 위한 컴파일 시작 시간 저장
00037             if(__DEBUG__==3) $start = getMicroTime();
00038 
00039             $this->lang = Context::getLangType();
00040 
00041             $this->input = $input?$input:$GLOBALS['HTTP_RAW_POST_DATA'];
00042 
00043             // 지원언어 종류를 뽑음
00044             preg_match_all("/xml:lang=\"([^\"].+)\"/i", $this->input, $matches);
00045 
00046             // xml:lang이 쓰였을 경우 지원하는 언어종류를 뽑음
00047             if(count($matches[1]) && $supported_lang = array_unique($matches[1])) {
00048                 // supported_lang에 현재 접속자의 lang이 없으면 en이 있는지 확인하여 en이 있으면 en을 기본, 아니면 첫번째것을..
00049                 if(!in_array($this->lang, $supported_lang)) {
00050                     if(in_array('en', $supported_lang)) {
00051                         $this->lang = 'en';
00052                     } else {
00053                         $this->lang = array_shift($supported_lang);
00054                     }
00055                 }
00056             // 특별한 언어가 지정되지 않았다면 언어체크를 하지 않음
00057             } else {
00058                 unset($this->lang);
00059             }
00060 
00061             $this->oParser = xml_parser_create('UTF-8');
00062 
00063             xml_set_object($this->oParser, $this);
00064             xml_set_element_handler($this->oParser, "_tagOpen", "_tagClosed");
00065             xml_set_character_data_handler($this->oParser, "_tagBody");
00066 
00067             xml_parse($this->oParser, $this->input);
00068             xml_parser_free($this->oParser);
00069 
00070             if(!count($this->output)) return;
00071 
00072             $output = array_shift($this->output);
00073 
00074             // 디버그를 위한 컴파일 시작 시간 저장
00075             if(__DEBUG__==3) $GLOBALS['__xmlparse_elapsed__'] += getMicroTime() - $start;
00076 
00077             return $output;
00078         }

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:


멤버 데이타 문서화

XmlParser::$input = NULL

input xml

XmlParser.class.php 파일의 16 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : parse().

XmlParser::$lang = "en"

기본 언어타입

XmlParser.class.php 파일의 19 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : XmlJsFilter::_compile(), XmlQueryParser::parse().

XmlParser::$oParser = NULL

xml parser

XmlParser.class.php 파일의 14 번째 라인에서 정의되었습니다.

XmlParser::$output = array()

output object

XmlParser.class.php 파일의 17 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : XmlQueryParser::parse(), parse().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.:

생성시간 : Wed Oct 28 23:01:32 2009, 프로젝트명 : XpressEngine, 생성자 :   doxygen 1.6.1