XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
GeneralXmlParser.class.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
12 {
13 
18  var $output = array();
19 
25  function parse($input = '')
26  {
27  $oParser = xml_parser_create('UTF-8');
28  xml_set_object($oParser, $this);
29  xml_set_element_handler($oParser, "_tagOpen", "_tagClosed");
30  xml_set_character_data_handler($oParser, "_tagBody");
31 
32  xml_parse($oParser, $input);
33  xml_parser_free($oParser);
34 
35  if(count($this->output) < 1)
36  {
37  return;
38  }
39  $this->output = array_shift($this->output);
40 
41  return $this->output;
42  }
43 
51  function _tagOpen($parser, $node_name, $attrs)
52  {
53  $obj = new stdClass();
54  $obj->node_name = strtolower($node_name);
55  $obj->attrs = $attrs;
56  $obj->childNodes = array();
57 
58  $this->output[] = $obj;
59  }
60 
68  function _tagBody($parser, $body)
69  {
70  //if(!trim($body)) return;
71  $this->output[count($this->output) - 1]->body .= $body;
72  }
73 
80  function _tagClosed($parser, $node_name)
81  {
82  $node_name = strtolower($node_name);
83  $cur_obj = array_pop($this->output);
84  $parent_obj = &$this->output[count($this->output) - 1];
85  $tmp_obj = &$parent_obj->childNodes[$node_name];
86 
87  if($tmp_obj)
88  {
89  if(is_array($tmp_obj))
90  {
91  $tmp_obj[] = $cur_obj;
92  }
93  else
94  {
95  $tmp_obj = array($tmp_obj, $cur_obj);
96  }
97  }
98  else
99  {
100  $tmp_obj = $cur_obj;
101  }
102  }
103 
104 }
105 /* End of file GeneralXmlParser.class.php */
106 /* Location: ./classes/xml/GeneralXmlParser.class.php */
$obj
Definition: ko.install.php:262
_tagClosed($parser, $node_name)
_tagOpen($parser, $node_name, $attrs)
_tagBody($parser, $body)