2017-10-24 1 views
2

Ich habe ein neues Kind in bestehenden XML-Datei mit simplexml_load_file() hinzugefügt function..But es nicht so formatiert, was kommt .. Ich habe diesen Code versuchthinzufügen Newline nach addChild() in simplexml_load_file php

`$file = 'data/users.xml'; 
    $xml = simplexml_load_file($file); 
    $xml->Users; 
    $newuser = $xml->addChild('userdata'); 
    $newuser->addChild('userid', $data['id']); 
    $newuser->addChild('name', $data['name']); 
    $newuser->addChild('email', $data['email']); 
    $newuser->addChild('mobile', $data['mobile']); 
    $newuser->addChild('username', $data['user']); 
    $newuser->addChild('password', $data['pass']); 
    $newuser->addChild('role', $data['role']); 

    $dom = dom_import_simplexml($xml)->ownerDocument; 
    $dom->formatOutput = TRUE; 
    $dom->save($file);` 

Ergebnis ist

`<userdata><name>agallery</name><filepath>path/to/gallery</filepath> 
<thumb>mythumb.jpg</thumb></userdata>` 

Aber ich brauche es so formatiert wie diese

`<userdata> 
<name>agallery</name> 
<filepath>path/to/gallery</filepath> 
<thumb>mythumb.jpg</thumb> 
</userdata>` 

Antwort

1

Die Formatierung eines Dokuments ist für XML nicht wichtig, obwohl es normalerweise dazu neigt, in einem strukturierten Layoutformat dargestellt zu werden. SimpleXML hat keine Möglichkeit, dies zu tun (AFAIK), so können Sie DOM verwenden müssen, dies zu tun ...

$dom = dom_import_simplexml($xml)->ownerDocument; 
$dom->formatOutput = TRUE; 
$dom->save($file); 

Dies nimmt das Dokument, konvertiert es in DOM und formatiert dann die Ausgabe.

EDIT: Dies ist ein häufiges Problem, dass die Formatierung scheint nicht nur zu Zeiten arbeiten, scheint die Problemumgehung übertrieben, aber das ist, was manchmal als ...

Ende Umgehungen
$dom = dom_import_simplexml($xml)->ownerDocument; 
$dom->formatOutput = true; 
$dom->preserveWhiteSpace = false; 
$dom->loadXML($dom->saveXML()); 
$dom->save($file); 
+0

in Ihrer Antwort ' $ dom' Variable repräsentiert? –

+1

$ dom wird als DOMDocument erstellt (das von 'dom_import_simplexml' zurückgegebene DOMElement wird dann zum Abrufen des Besitzerdokuments verwendet). Es ist einfach eine Kopie Ihres SimpleXML-Dokuments. –

+0

bitte c meine aktualisierte Frage code..stil es ist gekommen, als ob als altes Ergebnis..ist es etwas, was ich verpasst habe? –