Maison > Article > développement back-end > Exemple d'analyse de XML généré sur la base de php
exemple de code simple php pour générer du XML
Utilisez PHP DOMDocument pour créer des fichiers XML dynamiques
Lorsque vous traitez du XML- applications basées sur , les développeurs doivent souvent créer des structures de données codées en XML. Par exemple, les modèles d'état XML sur le Web basés sur les entrées de l'utilisateur, les instructions XML de requête du serveur et les réponses des clients basées sur les paramètres d'exécution.
Bien que la construction d'une structure de données XML prenne du temps, si vous utilisez l'interface de programmation d'application PHP DOM mature, tout deviendra simple et clair. Cet article vous présentera les principales fonctions de l'interface de l'application PHP DOM et vous montrera comment générer un fichier XML complet et correct et l'enregistrer sur le disque.
Créer une déclaration de type de document
De manière générale, les déclarations XML sont placées en haut du document. La déclaration en PHP est très simple : il suffit d'instancier un objet de la classe de document DOM et de lui donner un numéro de version. Afficher la liste des programmes A :
Liste des programmes 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(); ?>
Veuillez noter la méthode saveXML() de l'objet document DOM. J'entrerai plus en détail sur cette méthode plus tard, mais pour l'instant, vous devez simplement comprendre brièvement qu'elle est utilisée pour afficher l'instantané actuel du document XML dans un fichier ou un navigateur. Dans cet exemple, j'ai affiché le texte ASCII directement dans le navigateur pour améliorer la lisibilité. Dans les applications pratiques, les fichiers d'en-tête texte/XML peuvent être envoyés au navigateur.
Si vous affichez la sortie dans un navigateur, vous pouvez voir le code suivant :
dc55d8f1b8d0d15e8e0c4fca7640a4b5
Ajouter des éléments et des nœuds de texte
La véritable puissance de XML vient de ses éléments et de son contenu encapsulé. Heureusement, une fois le document DOM initialisé, de nombreuses opérations deviennent très simples. Ce processus comprend les deux étapes suivantes :
Pour chaque élément ou nœud de texte que vous souhaitez ajouter, appelez la méthode createElement() ou createTextNode() de l'objet document DOM via le nom de l'élément ou le contenu du texte. Cela crée un nouvel objet correspondant à l'élément ou au nœud de texte.
Ajoutez un élément ou un nœud de texte à un nœud parent dans l'arborescence du document XML en appelant la méthode appendChild() du nœud, en lui transmettant l'objet créé à l'étape précédente.
L'exemple suivant démontrera clairement ces 2 étapes, veuillez consulter la liste B.
Liste de programmes 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(); ?>
Ici, je crée d'abord un élément racine nommé 8bc7a580495bfabca110b6d1a58d0451 et l'attribue au fichier d'en-tête XML. Ensuite, je crée un élément nommé 5083cbefc9e5095dae6431462e2af988 et en fais l'élément racine. Enfin, je crée un autre nœud de texte avec la valeur "pepperoni" et je l'attribue à l'élément 5083cbefc9e5095dae6431462e2af988 Le résultat final ressemble à ceci :
<?xml version="1.0"?> <toppings> <item>pepperoni</item> </toppings>
Si vous souhaitez ajouter une autre garniture, créez simplement un autre abe99b3e8f8d0bec94b2bf010d2825ef et ajoutez un contenu différent, comme indiqué dans le listing C.
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(); ?>
Ce qui suit est le résultat après l'exécution du Listing C :
<?xml version="1.0"?> <toppings> <item>pepperoni</item> <item>tomato</item> </toppings>
Ajouter des attributs
En utilisant des attributs, vous pouvez également ajouter des informations appropriées aux éléments. Pour l'API PHP DOM, l'ajout d'un attribut nécessite deux étapes : utilisez d'abord la méthode createAttribute() de l'objet document DOM pour créer un nœud avec le nom de l'attribut, puis ajoutez le nœud du document au nœud d'attribut avec la valeur de l'attribut. Voir la liste D pour plus de détails.
Liste de programmes 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(); ?>
Le résultat est le suivant :
<?xml version="1.0"?> <toppings> <item price="4">pepperoni</item> </toppings>
Ajouter le module CDATA et l'assistant de processus
Bien que le module CDATA et l'assistant de processus ne soient pas souvent utilisés, en appelant le Objet document DOM Les méthodes createCDATASection() et createProcessingInstruction(), l'API PHP prend également en charge CDATA et les assistants de processus, voir 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(); ?>
Le résultat ressemble à ceci :
<?xml version="1.0"?> <toppings> <item price="4">pepperoni</item> <![CDATA[ Customer requests that pizza be sliced into 16 square pieces ]]> <?pizza bake()?> </toppings>
Enregistrement des résultats
Une fois que vous avez atteint votre objectif, vous pouvez enregistrer les résultats dans un fichier ou les stocker dans Variable PHP. Les résultats peuvent être enregistrés dans un fichier en appelant la méthode save() avec un nom de fichier, ou dans une variable PHP en appelant la méthode saveXML(). Veuillez vous référer à l'exemple suivant (Liste de programmes F) :
Liste de programmes 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"); ?>
Ce qui suit est un exemple pratique, vous pouvez le tester.
xml.php (générer xml)
<? $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); ?>
Tutoriel recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!