Heim > Backend-Entwicklung > PHP-Tutorial > Beispiel für das Parsen von XML, das auf Basis von PHP generiert wurde

Beispiel für das Parsen von XML, das auf Basis von PHP generiert wurde

coldplay.xixi
Freigeben: 2023-04-08 20:46:02
nach vorne
2608 Leute haben es durchsucht

Beispiel für das Parsen von XML, das auf Basis von PHP generiert wurde

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(); 
?>
Nach dem Login kopieren

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(); 
?>
Nach dem Login kopieren

Hier erstelle ich zunächst ein Root-Element mit dem Namen und ordne es der XML-Header-Datei zu. Dann erstelle ich ein Element mit dem Namen und mache es zum Stammelement. Schließlich erstelle ich einen Textknoten mit dem Wert „pepperoni“ und weise ihn dem Element zu. Das Endergebnis sieht so aus:

<?xml version="1.0"?> 
<toppings> 
    <item>pepperoni</item> 
</toppings>
Nach dem Login kopieren

Wenn Sie einen weiteren Belag hinzufügen möchten, erstellen Sie einfach einen weiteren und fügen Sie anderen Inhalt hinzu, wie in Listing C gezeigt.

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(); 
?>
Nach dem Login kopieren

Das Folgende ist die Ausgabe nach der Ausführung von Listing C:

<?xml version="1.0"?> 
<toppings> 
    <item>pepperoni</item> 
    <item>tomato</item> 
</toppings>
Nach dem Login kopieren

Attribute hinzufügen

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(); 
?>
Nach dem Login kopieren

Die Ausgabe lautet wie folgt:

<?xml version="1.0"?> 
<toppings> 
    <item price="4">pepperoni</item> 
</toppings>
Nach dem Login kopieren

CDATA-Modul und Prozessassistent hinzufügen

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(); 
?>
Nach dem Login kopieren

Die Ausgabe sieht so aus:

<?xml version="1.0"?> 
<toppings> 
<item price="4">pepperoni</item> 
<![CDATA[ 
Customer requests that pizza be sliced into 16 square pieces 
]]> 
<?pizza bake()?> 
</toppings>
Nach dem Login kopieren

Speichern der Ergebnisse

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"); 
?>
Nach dem Login kopieren

Das Folgende ist ein praktisches Beispiel, Sie können es testen.

xml.php (xml generieren)

<? 
    $conn = mysql_connect(&#39;localhost&#39;, &#39;root&#39;, &#39;123456&#39;) or die(&#39;Could not connect: &#39; . mysql_error()); 
    mysql_select_db(&#39;vdigital&#39;, $conn) or die (&#39;Can\&#39;t use database : &#39; . 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=&#39;1.0&#39; encoding=&#39;utf-8&#39; ?><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); 
?>
Nach dem Login kopieren
Empfohlenes Tutorial: „

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!

Verwandte Etiketten:
xml
Quelle:liqingbo.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage