Ist es möglich, mit den SimpleXML-Funktionen von PHP ein XML-Objekt von Grund auf neu zu erstellen? Wenn Sie die Funktionsliste durchsehen, gibt es Möglichkeiten, eine vorhandene XML-Zeichenfolge in ein Objekt zu importieren, das Sie dann bearbeiten können. Wenn ich jedoch ein XML-Objekt nur programmgesteuert von Grund auf neu generieren möchte, wie geht das am besten?
Ich habe herausgefunden, dass Sie simplexml_load_string () verwenden und die gewünschte Root-Zeichenfolge übergeben können, und dann haben Sie ein Objekt, das Sie durch Hinzufügen von Kindern manipulieren können ... obwohl dies wie ein Hack erscheint, da ich muss Codieren Sie tatsächlich etwas XML in die Zeichenfolge, bevor es geladen werden kann.
Ich habe es mit den DOMDocument-Funktionen gemacht , obwohl es etwas verwirrend ist, weil ich nicht sicher bin, was das DOM mit dem Erstellen eines reinen XML-Dokuments zu tun hat ... also ist es vielleicht nur schlecht benannt :-)
content
Tag nicht geschlossen</content>
?In PHP5 sollten Sie stattdessen die Klasse Document Object Model verwenden. Beispiel:
$domDoc = new DOMDocument; $rootElt = $domDoc->createElement('root'); $rootNode = $domDoc->appendChild($rootElt); $subElt = $domDoc->createElement('foo'); $attr = $domDoc->createAttribute('ah'); $attrVal = $domDoc->createTextNode('OK'); $attr->appendChild($attrVal); $subElt->appendChild($attr); $subNode = $rootNode->appendChild($subElt); $textNode = $domDoc->createTextNode('Wow, it works!'); $subNode->appendChild($textNode); echo htmlentities($domDoc->saveXML());
quelle
$elem->append($doc->p('This is a paragraph'));
Anhängen von Text ist eine zweizeilige Aufgabe. Ich würde so etwas lieben$elem->append('Some text');
Bitte sehen Sie meine Antwort hier . Wie dreamwerx.myopenid.com hervorhebt , ist dies mit SimpleXML möglich , aber die DOM-Erweiterung wäre der bessere und flexiblere Weg. Zusätzlich gibt es einen dritten Weg: die Verwendung von XMLWriter . Es ist viel einfacher zu bedienen als das DOM und daher meine bevorzugte Methode, XML-Dokumente von Grund auf neu zu schreiben.
$w=new XMLWriter(); $w->openMemory(); $w->startDocument('1.0','UTF-8'); $w->startElement("root"); $w->writeAttribute("ah", "OK"); $w->text('Wow, it works!'); $w->endElement(); echo htmlentities($w->outputMemory(true));
Übrigens: DOM steht für D ocument O bject M odel; Dies ist die standardisierte API für XML-Dokumente.
quelle