Heim  >  Artikel  >  Backend-Entwicklung  >  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
coldplay.xixinach vorne
2020-06-10 09:10:432555Durchsuche

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(); 
?>

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:
dc55d8f1b8d0d15e8e0c4fca7640a4b5 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(); 
?>

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

<?xml version="1.0"?> 
<toppings> 
    <item>pepperoni</item> 
</toppings>

Wenn Sie einen weiteren Belag hinzufügen möchten, erstellen Sie einfach einen weiteren 5083cbefc9e5095dae6431462e2af988 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(); 
?>

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

<?xml version="1.0"?> 
<toppings> 
    <item>pepperoni</item> 
    <item>tomato</item> 
</toppings>

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(); 
?>

Die Ausgabe lautet wie folgt:

<?xml version="1.0"?> 
<toppings> 
    <item price="4">pepperoni</item> 
</toppings>

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(); 
?>

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>

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"); 
?>

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); 
?>

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:liqingbo.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen