protected function parseNode($element) { Log::log(LoggingConstants::MYDEBUG, " element: " . $element->nodeName); /*Object*/ $object = ComponentBuilder::buildComponent($element); $this->populate($object, $element); /*NodeList*/ $nodes = $element->childNodes; /*String*/ $field = ""; if ($object instanceof ITemplateNodeContainer) { /*IContainer*/ $obj = $object; $field = $obj->getFieldName(); /*int*/ $j = -1; for ($i = 0; $i < $nodes->length; $i++) { if ($nodes->item($i)->nodeName == $obj->getFieldName()) { $j = $i; break; } } /*Object*/ $value; if ($j != -1) { $value = ComponentBuilder::buildComponent($nodes->item($j), $obj->getItemClass()); } else { $value = ComponentBuilder::buildComponent($element, $obj->getItemClass()); } // Log::log(LoggingConstants::MYDEBUG, " --- " . get_class($object) . ' : ' . $obj->getFieldName() . ' = ' . $value); DataUtils::setValue($object, $obj->getFieldName(), $value); } for ($i = 0; $i < $nodes->length; $i++) { /*Node*/ $node = $nodes->item($i); if ($node->nodeName != "#text" && $node->nodeName != "#comment" && $node->nodeName != $field) { if ($node->nodeName == "PDFMetadata") { DataUtils::setValue($object, "metadata", $this->parseNode($node)); } else { if ($node->nodeName == "dataProvider") { $value = ComponentBuilder::buildComponent($node, "array"); DataUtils::setValue($object, $node->nodeName, $value); } else { DataUtils::setValue($object, $node->nodeName, $node->textContent); } } } } return $object; }
public static function buildComponent($node, $className = "buildComponentNode") { if ($className == "buildComponentNode") { return self::buildComponentNode($node); } /*ComponentBuilder*/ $builder = new ComponentBuilder(); // Log::log(LoggingConstants::MYDEBUG, "---" . $node->nodeName . ' = ' . $node->childNodes->item(0)); // if ($node->childNodes->length == 0) // return $node->textContent; /*Object*/ $result = $builder->buildList($node->childNodes, $className); return $result; }