2016-09-28 11 views
2

に耳を傾けるdoesntの。selfwritten XMLジェネレータは、私は次のことを含むページを持つXML出力

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もメモありがとうございました。愚かな私 –

答えて

0

あなたのXMLを助けてください、有効ではありません。これは、複数のルートノードを持つことはできません。あなたは1つだけ持っている必要があります(すなわち<test>)。

XMLにおける複数のルートノードの動作は確かに定義されていません。したがって、 "部分的にフォーマットされた出力"です。

+0

編集:実際のところ、1つのルートがあります。問題は、それは出力レイアウトを持っていません –

+1

@RoyStijsigerその後、 "あなたの本物"を表示する(私はこのコメントを後悔するつもりだ...) – Xenos

+0

この機能では、 –

関連する問題