/**
  * Handler for end tags
  * @param resource $parser a resource handle of the XML parser
  * @param string $name
  * @return void
  */
 private function _end($parser, $name)
 {
     array_pop($this->_tagStack);
     if ($this->_CurrentXmlToArrayNode instanceof XmlToArrayNode) {
         $this->_CurrentXmlToArrayNode->setClosed();
         $breaker = 0;
         // step up the stack and close all tags as long as current tag is reached in stack
         if ($this->_CurrentXmlToArrayNode->getName() != $name) {
             do {
                 $this->_CurrentXmlToArrayNode = $this->_CurrentXmlToArrayNode->getParentXmlToArrayNode();
                 $this->_CurrentXmlToArrayNode->setClosed();
                 if ($breaker > 100) {
                     trigger_error('Had to break out from endless loop.', E_USER_WARNING);
                     break;
                 }
                 ++$breaker;
             } while ($this->_CurrentXmlToArrayNode->getName() != $name);
         } elseif ($this->_CurrentXmlToArrayNode->hasParentXmlToArrayNode()) {
             $this->_CurrentXmlToArrayNode = $this->_CurrentXmlToArrayNode->getParentXmlToArrayNode();
         }
     }
 }
Example #2
0
 public function testGetName()
 {
     $XmlToArrayNode = new XmlToArrayNode($this->_name, $this->_attributes);
     $this->assertEquals($this->_name, $XmlToArrayNode->getName());
 }