2016-09-28 4 views
2

У меня есть страница, содержащее следующее:selfwritten генератора XML оленья кожа слушать вывод XML

$xml = new DOMDocument('1.0', 'UTF-8'); 
// Set de format van het xml document 
$xml->formatOutput = true; 
$test = $xml->createElement('test'); 
$xml->appendChild($test); 
$test->createElement('name','pierre'); 

XMLController::CreateTestXML($xml); 

я написал 2 функции.

1.) CreateMultipleElements()
2.) CreateTestXML()

функция

CreateTestXML() содержит:
Эта функция предназначена для добавления что-то в XML, и это делает:

public static function CreateTestXML(&xml){ 
    $objectArray = self::CreateMultipleElements(
      $xml, 
      array(
       "Persoon" => null, 
       "Paard" => "Wit" 
      ), 
      $parent = null, 
      $attributes = array(
       "Persoon" => array(
        "Type" => "NPS" 
       ) 
      ) 
     ); 
} 

Затем у нас есть функция, которая фактически создает узлы и элементы, которые работают правильно:

public static function CreateMultipleElements(&$xml,$objectNameValue,$parent = null, $attributes = null){ 
     $xmlObjecten = array(); 
     foreach($objectNameValue as $objectName => $nodeValue){ 
      $object = $xml->createElement($objectName,$nodeValue); 
      if(isset($attributes[$objectName])){ 
       foreach($attributes[$objectName] as $key => $value){ 
        $object->setAttribute($key,$value); 
       } 
      } 
      if($parent === null){ 
       $xmlObjecten[$objectName] = $xml->appendChild($object); 
      } 
      else{ 
       $xmlObjecten[$objectName] = $parent->appendChild($object); 
      } 
     } 
     return $xmlObjecten; 
    } 

Вывод XML будет выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<test> 
    <name>pierre</name> 
</test> 
<persoon type="NPS"></persoon><paard>wit</paard> 

Так что, похоже, как генерируемая часть игнорирует выходной формат, пожалуйста, помогите

+0

Вы вызываете свой статический метод без параметров, в то время как они требуют '$ xml' в качестве их первого параметра. Обратите внимание, что объекты передаются с помощью ref, поэтому нет необходимости в '&' – Xenos

+0

@Xenos. Этот параметр есть, я написал код, на который я написал агию причину личной информации, которой не хватало –

+0

@ Xenos также благодарит за примечание, не сообщив, что stupid me –

ответ

0

Вы XML не является допустимым: он не может иметь несколько корневых узлов. У вас должен быть только один (т.е. <test>).

Поведение для нескольких корневых узлов в XML, конечно, не определено, следовательно, «частично отформатированный вывод».

+0

Редактировать: в нашей реальной вещи у нас есть один корень. Проблема в том, что он не принимает выходной макет –

+1

@RoyStijsiger Затем покажите «свою реальную вещь» (я буду сожалеть об этом комментарии ...) – Xenos

+0

Его единственный один корень с внутренним использованием в этих функциях –