einfacher PHP-Beispielcode zum Generieren von XML
Verwenden Sie PHP DOMDocument, um dynamische XML-Dateien zu erstellen
Beim Umgang mit XML- Basierend auf Anwendungen müssen Entwickler häufig XML-codierte Datenstrukturen erstellen. Zum Beispiel XML-Statusvorlagen im Web basierend auf Benutzereingaben, XML-Anweisungen für Serveranforderungen und Clientantworten basierend auf Laufzeitparametern.
Obwohl der Aufbau einer XML-Datenstruktur zeitaufwändig ist, wird alles einfach und klar, wenn Sie die ausgereifte PHP-DOM-Anwendungsprogrammierschnittstelle verwenden. Dieser Artikel führt Sie in die Hauptfunktionen der PHP-DOM-Anwendungsschnittstelle ein und zeigt, wie Sie eine korrekte vollständige XML-Datei generieren und auf der Festplatte speichern.
Erstellen Sie eine Dokumenttypdeklaration.
Im Allgemeinen werden XML-Deklarationen oben im Dokument platziert. Die Deklaration in PHP ist sehr einfach: Instanziieren Sie einfach ein Objekt der DOM-Dokumentklasse und geben Sie ihm eine Versionsnummer. Programmliste A anzeigen:
Programmliste A
<?php // create doctype $dom = new DOMDocument("1.0"); // display document in browser as plain text // for readability purposes header("Content-Type: text/plain"); // save and display tree echo $dom->saveXML(); ?>
Bitte beachten Sie die Methode saveXML() des DOM-Dokumentobjekts. Auf diese Methode werde ich später noch genauer eingehen, aber zunächst muss man sich nur kurz darüber im Klaren sein, dass sie dazu dient, den aktuellen Snapshot des XML-Dokuments in eine Datei oder einen Browser auszugeben. In diesem Beispiel habe ich den ASCII-Text direkt an den Browser ausgegeben, um die Lesbarkeit zu verbessern. In praktischen Anwendungen können Text-/XML-Headerdateien an den Browser gesendet werden.
Wenn Sie die Ausgabe in einem Browser anzeigen, sehen Sie den folgenden Code:
Elemente und Textknoten hinzufügen
Die wahre Stärke von XML liegt in seinen Elementen und gekapselten Inhalten. Glücklicherweise werden viele Vorgänge sehr einfach, sobald Sie das DOM-Dokument initialisiert haben. Dieser Prozess umfasst die folgenden zwei Schritte:
Für jedes Element oder jeden Textknoten, den Sie hinzufügen möchten, rufen Sie die Methode createElement() oder createTextNode() des DOM-Dokumentobjekts über den Elementnamen oder Textinhalt auf. Dadurch wird ein neues Objekt erstellt, das dem Element oder Textknoten entspricht.
Fügen Sie einen Element- oder Textknoten zu einem übergeordneten Knoten im XML-Dokumentbaum hinzu, indem Sie die appendChild()-Methode des Knotens aufrufen und ihr das im vorherigen Schritt erstellte Objekt übergeben.
Das folgende Beispiel verdeutlicht diese beiden Schritte, siehe Listing B.
Programmliste B
<?php // create doctype $dom = new DOMDocument("1.0"); // display document in browser as plain text // for readability purposes header("Content-Type: text/plain"); // create root element $root = $dom->createElement("toppings"); $dom->appendChild($root); // create child element $item = $dom->createElement("item"); $root->appendChild($item); // create text node $text = $dom->createTextNode("pepperoni"); $item->appendChild($text); // save and display tree echo $dom->saveXML(); ?>
<?xml version="1.0"?> <toppings> <item>pepperoni</item> </toppings>
Listing C
<?php // create doctype $dom = new DOMDocument("1.0"); // display document in browser as plain text // for readability purposes header("Content-Type: text/plain"); // create root element $root = $dom->createElement("toppings"); $dom->appendChild($root); // create child element $item = $dom->createElement("item"); $root->appendChild($item); // create text node $text = $dom->createTextNode("pepperoni"); $item->appendChild($text); // create child element $item = $dom->createElement("item"); $root->appendChild($item); // create another text node $text = $dom->createTextNode("tomato"); $item->appendChild($text); // save and display tree echo $dom->saveXML(); ?>
<?xml version="1.0"?> <toppings> <item>pepperoni</item> <item>tomato</item> </toppings>
Durch die Verwendung von Attributen können Sie Elementen auch entsprechende Informationen hinzufügen. Für die PHP-DOM-API erfordert das Hinzufügen eines Attributs zwei Schritte: Erstellen Sie zunächst einen Knoten mit dem Attributnamen mithilfe der Methode createAttribute() des DOM-Dokumentobjekts und fügen Sie dann den Dokumentknoten mit dem Attributwert zum Attributknoten hinzu. Einzelheiten finden Sie in Listing D.
Programmliste D
<?php // create doctype $dom = new DOMDocument("1.0"); // display document in browser as plain text // for readability purposes header("Content-Type: text/plain"); // create root element $root = $dom->createElement("toppings"); $dom->appendChild($root); // create child element $item = $dom->createElement("item"); $root->appendChild($item); // create text node $text = $dom->createTextNode("pepperoni"); $item->appendChild($text); // create attribute node $price = $dom->createAttribute("price"); $item->appendChild($price); // create attribute value node $priceValue = $dom->createTextNode("4"); $price->appendChild($priceValue); // save and display tree echo $dom->saveXML(); ?>
<?xml version="1.0"?> <toppings> <item price="4">pepperoni</item> </toppings>
Obwohl das CDATA-Modul und der Prozessassistent nicht oft verwendet werden, können Sie durch Aufrufen des DOM-Dokumentobjekt Mit den Methoden createCDATASection() und createProcessingInstruction() unterstützt die PHP-API auch CDATA und Prozessassistenten gut, siehe Listing E.
Listing E
<?php // create doctype // create doctype $dom = new DOMDocument("1.0"); // display document in browser as plain text // for readability purposes header("Content-Type: text/plain"); // create root element $root = $dom->createElement("toppings"); $dom->appendChild($root); // create child element $item = $dom->createElement("item"); $root->appendChild($item); // create text node $text = $dom->createTextNode("pepperoni"); $item->appendChild($text); // create attribute node $price = $dom->createAttribute("price"); $item->appendChild($price); // create attribute value node $priceValue = $dom->createTextNode("4"); $price->appendChild($priceValue); // create CDATA section $cdata = $dom->createCDATASection(" Customer requests that pizza be sliced into 16 square pieces "); $root->appendChild($cdata); // create PI $pi = $dom->createProcessingInstruction("pizza", "bake()"); $root->appendChild($pi); // save and display tree echo $dom->saveXML(); ?>
<?xml version="1.0"?> <toppings> <item price="4">pepperoni</item> <![CDATA[ Customer requests that pizza be sliced into 16 square pieces ]]> <?pizza bake()?> </toppings>
Sobald Sie Ihr Ziel erreicht haben, können Sie die Ergebnisse in einer Datei speichern oder speichern PHP-Variable. Die Ergebnisse können in einer Datei gespeichert werden, indem die Methode save() mit dem Dateinamen aufgerufen wird, oder in einer PHP-Variablen, indem die Methode saveXML() aufgerufen wird. Bitte beachten Sie das folgende Beispiel (Programmliste F):
Programmliste F
<?php // create doctype $dom = new DOMDocument("1.0"); // create root element $root = $dom->createElement("toppings"); $dom->appendChild($root); $dom->formatOutput=true; // create child element $item = $dom->createElement("item"); $root->appendChild($item); // create text node $text = $dom->createTextNode("pepperoni"); $item->appendChild($text); // create attribute node $price = $dom->createAttribute("price"); $item->appendChild($price); // create attribute value node $priceValue = $dom->createTextNode("4"); $price->appendChild($priceValue); // create CDATA section $cdata = $dom->createCDATASection(" Customer requests that pizza be sliced into 16 square pieces "); $root->appendChild($cdata); // create PI $pi = $dom->createProcessingInstruction("pizza", "bake()"); $root->appendChild($pi); // save tree to file $dom->save("order.xml"); // save tree to string $order = $dom->save("order.xml"); ?>
xml.php (xml generieren)
<? $conn = mysql_connect('localhost', 'root', '123456') or die('Could not connect: ' . mysql_error()); mysql_select_db('vdigital', $conn) or die ('Can\'t use database : ' . mysql_error()); $str = "SELECT id,username FROM `admin` GROUP BY `id` ORDER BY `id` ASC"; $result = mysql_query($str) or die("Invalid query: " . mysql_error()); if($result) { $xmlDoc = new DOMDocument(); if(!file_exists("01.xml")){ $xmlstr = "<?xml version='1.0' encoding='utf-8' ?><message></message>"; $xmlDoc->loadXML($xmlstr); $xmlDoc->save("01.xml"); } else { $xmlDoc->load("01.xml"); } $Root = $xmlDoc->documentElement; while ($arr = mysql_fetch_array($result)){ $node1 = $xmlDoc->createElement("id"); $text = $xmlDoc->createTextNode(iconv("GB2312","UTF-8",$arr["id"])); $node1->appendChild($text); $node2 = $xmlDoc->createElement("name"); $text2 = $xmlDoc->createTextNode(iconv("GB2312","UTF-8",$arr["username"])); $node2->appendChild($text2); $Root->appendChild($node1); $Root->appendChild($node2); $xmlDoc->save("01.xml"); } } mysql_close($conn); ?>
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonBeispiel für das Parsen von XML, das auf Basis von PHP generiert wurde. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!