PHP simpleXML wie speichert man die Datei formatiert?

Lesezeit: 3 Minuten

PHP simpleXML wie speichert man die Datei formatiert
Benutzer61734

Ich versuche, mit SimpleXML von PHP einige Daten zu einer vorhandenen XML-Datei hinzuzufügen. Das Problem ist, dass alle Daten in einer einzigen Zeile hinzugefügt werden:

<name>blah</name><class>blah</class><area>blah</area> ...

Und so weiter. Alles in einer Zeile. Wie fügt man Zeilenumbrüche ein?

Wie mache ich das so?

<name>blah</name>
<class>blah</class>
<area>blah</area>

ich benutze asXML() Funktion.

Danke.

  • Es gibt auch die BIRNE XML_Beautifier Paket.

    – karim79

    28. April 2009 um 17:22 Uhr

  • Ich weiß, das ist eine ziemlich alte Frage und Sie müssen eine Lösung gefunden haben. Kann für andere nützlich sein, schau es dir an github.com/spatie/array-to-xml

    – Vaibhav Malushte

    19. November 2020 um 15:16 Uhr

Du könntest die verwenden DOMDocument-Klasse Um Ihren Code neu zu formatieren:

$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
echo $dom->saveXML();

  • Danke. Einfach und effizient.

    – Andrej Duma

    3. Juli 2013 um 14:34 Uhr

  • Also ist es mit SimpleXML nicht möglich?

    – Jonathan

    18. November 2014 um 7:52 Uhr

  • @xcy7e Nein, das glaube ich nicht.

    – Gumbo

    18. November 2014 um 7:57 Uhr

  • Als ich versuchte, Inhalte zu formatieren, die ich an eine Datei anhängte, funktionierte dies nur, wenn ich vor dem Laden des vorhandenen Inhalts “preserveWhiteSpace” und “formatOutput” angab.

    – Sam

    19. Mai 2015 um 9:33 Uhr

1646630048 36 PHP simpleXML wie speichert man die Datei formatiert
Wittmann

Gumbos Lösung macht es möglich. Sie können oben mit simpleXml arbeiten und dies dann am Ende zu Echo hinzufügen und / oder mit Formatierung speichern.

Der folgende Code wiederholt es und speichert es in einer Datei (siehe Kommentare im Code und entfernen, was Sie nicht wollen):

//Format XML to save indented tree rather than one line
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
//Echo XML - remove this and following line if echo not desired
echo $dom->saveXML();
//Save XML to file - remove this and following line if save not desired
$dom->save('fileName.xml');

PHP simpleXML wie speichert man die Datei formatiert
troelskn

Verwenden dom_import_simplexml in ein DomElement konvertieren. Verwenden Sie dann seine Kapazität, um die Ausgabe zu formatieren.

$dom = dom_import_simplexml($simple_xml)->ownerDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();

  • funktioniert nicht. Die Funktion gibt ein DOMElement zurück, kein DOMDocument

    – karka91

    2. August 2012 um 13:18 Uhr

  • Scheint documentElement sollte sein ownerDocument. Ich bin mir nicht sicher, ob sich die API geändert hat oder dies nur ein Tippfehler ist. Ich habe es jetzt korrigiert.

    – troelskn

    2. August 2012 um 13:30 Uhr

  • Bitte beachten Sie, dass dies immer noch nicht funktioniert, da der PreserveWhiteSpace und der FormatOutput gesetzt sein sollten Vor Importieren des Dokuments, um Auswirkungen zu haben 🙂

    – karka91

    2. August 2012 um 13:48 Uhr

  • Interessant – da haben Sie recht. Sieht so aus, als würde Gumbos Antwort funktionieren.

    – troelskn

    2. August 2012 um 18:27 Uhr

1646630049 105 PHP simpleXML wie speichert man die Datei formatiert
quantme

Als Gumbo und Witman antworteten; Laden und Speichern eines XML-Dokuments aus einer bestehenden Datei (wir sind hier viele Neulinge) mit DOMDocument::laden und DOMDocument::speichern.

<?php
$xmlFile="filename.xml";
if( !file_exists($xmlFile) ) die('Missing file: ' . $xmlFile);
else
{
  $dom = new DOMDocument('1.0');
  $dom->preserveWhiteSpace = false;
  $dom->formatOutput = true;
  $dl = @$dom->load($xmlFile); // remove error control operator (@) to print any error message generated while loading.
  if ( !$dl ) die('Error while parsing the document: ' . $xmlFile);
  echo $dom->save($xmlFile);
}
?>

963070cookie-checkPHP simpleXML wie speichert man die Datei formatiert?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy