示例#1
0
 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;
 }