Frage

Ist es möglich, PHP SimpleXML Funktionen zu verwenden, um ein XML-Objekt von Grund auf neu zu erstellen? Blick durch die Funktionsliste, gibt es Möglichkeiten, einen vorhandenen XML-String in ein Objekt zu importieren, die Sie dann bearbeiten können, aber wenn ich will nur von Grunde auf neu programmatisch ein XML-Objekt erzeugen, was ist der beste Weg, das zu tun?

habe ich herausgefunden, dass Sie verwenden können, simplexml_load_string () und in der Wurzel String übergeben, die Sie wollen, und dann haben Sie ein Objekt bekommt man Kinder durch Hinzufügen ... obwohl dies scheint wie Art von Hack manipulieren kann, da ich habe tatsächlich einige XML in den String codiert, bevor sie geladen werden können.

Ich habe es getan mit den DOMDocument Funktionen , obwohl es ein wenig verwirrend, weil ich nicht sicher bin, was das DOM mit der Erstellung ein reines XML-Dokuments zu tun hat ... so vielleicht ist es nur schlecht genannt: -)

War es hilfreich?

Lösung

Sicher Sie können. ZB.

<?php
$newsXML = new SimpleXMLElement("<news></news>");
$newsXML->addAttribute('newsPagePrefix', 'value goes here');
$newsIntro = $newsXML->addChild('content');
$newsIntro->addAttribute('type', 'latest');
Header('Content-type: text/xml');
echo $newsXML->asXML();
?>

Output

<?xml version="1.0"?>
<news newsPagePrefix="value goes here">
    <content type="latest"/>
</news>

Haben Sie Spaß.

Andere Tipps

In PHP5, sollten Sie das Document Object Modell Klasse statt. 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());

Bitte beachten Sie meine Antwort hier . Wie dreamwerx.myopenid.com weist darauf hin, ist es möglich, dies zu tun mit SimpleXML , aber die XMLWriter . Es ist viel einfacher als der DOM zu verwenden, und daher ist es meine bevorzugte Art der Dokumente von Grunde auf XML geschrieben werden.

$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 für steht D OKUMENT O bject M odel; dies ist die standardisierte API in XML-Dokumente.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top