Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon dont PHP implémente l'analyse et la génération de XML basée sur DOMDocument

Explication détaillée de la façon dont PHP implémente l'analyse et la génération de XML basée sur DOMDocument

墨辰丷
墨辰丷original
2018-05-19 11:56:271668parcourir

Cet article présente principalement la méthode d'analyse PHP et de génération de XML basée sur DOMDocument. Il analyse diverses techniques de fonctionnement courantes de PHP utilisant DOMDocument pour analyser les nœuds XML et générer des fichiers XML basés sur des exemples spécifiques. Les amis dans le besoin peuvent s'y référer. 🎜 >

1. Génération de XML

Le fonctionnement du document DOM de XML est un peu plus compliqué que le simplexml précédent. Je pense que simplexml est comme dom4j en Java. quel est le principe, c'est pareil. Si les nœuds et les attributs du DOMDocument sont considérés comme des branches et des feuilles, alors le DOMDocument du DOMDocument est la racine et les nœuds et les attributs sont tous montés sous cet objet. Ce sera clair si vous regardez le code suivant

<?php
 $doc=new DOMDocument(&#39;1.0&#39;,&#39;utf-8&#39;);
 //创建根节点
 $root=$doc->createElement("StudentInfo");
 //创建第一个子节点
 $item=$doc->createElement("Item");
 $name=$doc->createElement("name","蔡依林");
 $studentnum=$doc->createElement("num","2009010502");
 //创建属性(phpdom可以把任何元素当做子节点)
 $id=$doc->createAttribute("id");
 $value=$doc->createTextNode(&#39;1&#39;);
 $id->appendChild($value);
 //在父节点下面加入子节点
 $item->appendChild($name);
 $item->appendChild($studentnum);
 $item->appendChild($id);
 $item2=$doc->createElement("Item");
 $name2=$doc->createElement("name","潘玮柏");
 $studentnum2=$doc->createElement("num","2009010505");
 $id2=$doc->createAttribute("id");
 $value2=$doc->createTextNode(&#39;2&#39;);
 $id2->appendChild($value2);
 $item2->appendChild($name2);
 $item2->appendChild($studentnum2);
 $item2->appendChild($id2);
 $root->appendChild($item);
 $root->appendChild($item2);
 //把根节点挂载在DOMDocument对象
 $doc->appendChild($root);
 header("Content-type: text/xml");
 //在页面上输出xml
 echo $doc->saveXML();
 //将xml保存成文件
 $doc->save("stu.xml");
?>

Si vous regardez attentivement ce code, ce n'est pas compliqué. La possibilité est que ce soit le cas. est un peu dans l'attribut id. Question, le nœud de texte doit également être monté sous le DOMDocument, puis le nœud de texte doit être monté sous l'attribut. Jetons un coup d'œil au XML généré

En fait, DOMDocument génère d'abord des nœuds ou des attributs, et la relation hiérarchique du XML est finalement reflétée via addchild

2. Analyse DOMDocument

<?php
 $doc=new DOMDocument();
 //如果是解析xml字符串则使用loadXML
 $doc->load(&#39;stu.xml&#39;);
 //取得根节点
 $root=$doc->documentElement;
 //通过标记的名字取得对应的元素
 $items=$root->getElementsByTagName(&#39;Item&#39;);
 foreach($items as $key=>$val){
  // echo count($val->attributes);
  //id是第一个属性所以使用item(0),nodeValue用来取得节点的值
  echo $val->attributes->item(0)->name.":".$val->attributes->item(0)->nodeValue."  ";
  foreach($val->getElementsByTagName(&#39;name&#39;) as $key2=>$val2){
    echo $val2->nodeValue."  ";
  }
  foreach($val->getElementsByTagName(&#39;num&#39;) as $key3=>$val4){
    echo $val4->nodeValue."</br>";
  }
 }
?>

La clé de l'analyse est de comprendre la méthode getElementsByTagName et l'attribut attributs. et l'élément sont analysés Le point de XML. Tout le reste est assez simple. Jetez un œil à ce qui est analysé

De manière générale, c'est un peu plus gênant que simplexml, mais en tant que programmeur, cela peut être accepté. .

Recommandations associées :

Utilisation de PHPDOMDocumentExplication détaillée des méthodes de fonctionnement XML

Classe d'opération XML PHPDOMDocument

Solution au problème des caractères chinois tronqués lors de l'enregistrement XML en PHP DOMDocument

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!

Déclaration:
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