Maison > développement back-end > tutoriel php > Exemple d'analyse de XML généré sur la base de php

Exemple d'analyse de XML généré sur la base de php

coldplay.xixi
Libérer: 2023-04-08 20:46:02
avant
2610 Les gens l'ont consulté

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(); 
?>
Copier après la connexion

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 :

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(); 
?>
Copier après la connexion

Ici, je crée d'abord un élément racine nommé et l'attribue au fichier d'en-tête XML. Ensuite, je crée un élément nommé 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 Le résultat final ressemble à ceci :

<?xml version="1.0"?> 
<toppings> 
    <item>pepperoni</item> 
</toppings>
Copier après la connexion

Si vous souhaitez ajouter une autre garniture, créez simplement un autre <élément> 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(); 
?>
Copier après la connexion

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>
Copier après la connexion

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(); 
?>
Copier après la connexion

Le résultat est le suivant :

<?xml version="1.0"?> 
<toppings> 
    <item price="4">pepperoni</item> 
</toppings>
Copier après la connexion

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(); 
?>
Copier après la connexion

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>
Copier après la connexion

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"); 
?>
Copier après la connexion

Ce qui suit est un exemple pratique, vous pouvez le tester.
xml.php (générer xml)

<? 
    $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); 
?>
Copier après la connexion

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!

Étiquettes associées:
xml
source:liqingbo.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal