Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung, wie PHP das Parsen und Generieren von XML basierend auf DOMDocument implementiert

Detaillierte Erklärung, wie PHP das Parsen und Generieren von XML basierend auf DOMDocument implementiert

墨辰丷
墨辰丷Original
2018-05-19 11:56:271666Durchsuche

Dieser Artikel stellt hauptsächlich die Methode zum Parsen und Generieren von XML basierend auf DOMDocument vor. Er analysiert verschiedene gängige Betriebstechniken von PHP, um XML-Knoten zu analysieren und XML-Dateien basierend auf bestimmten Beispielen zu generieren

1. Die DOMDocument-Operation von XML ist meiner Meinung nach etwas komplizierter als dom4j in Java Was das Prinzip ist, ist das Gleiche. Wenn die Knoten und Attribute im DOMDocument als Zweige und Blätter betrachtet werden, ist das DOMDocument des DOMDocuments die Wurzel, und alle Knoten und Attribute werden unter diesem Objekt gemountet. Es wird sehr klar, wenn Sie sich den folgenden Code ansehen

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

Wenn Sie sich diesen Code genau ansehen, ist er möglicherweise nicht kompliziert Das id-Attribut muss ebenfalls unter dem DOMDocument gemountet werden, und dann muss der Textknoten unter dem Attribut gemountet werden. Werfen wir einen Blick auf die generierte XML

Tatsächlich generiert DOMDocument zuerst Knoten oder Attribute, und die hierarchische Beziehung von XML wird schließlich durch addchild widergespiegelt

2. DOMDocument-Analyse

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

Der Schlüssel zum Parsen ist das Verständnis der getElementsByTagName-Methode, der Attribute, der Attribute und der Elemente Wird zum Parsen des XML-Fokus verwendet. Alles andere ist ziemlich einfach. Schauen Sie sich an, was analysiert wird.

Im Allgemeinen ist es etwas schwieriger als Simplexml, aber als Programmierer kann es akzeptiert werden .

Verwandte Empfehlungen:

PHP-NutzungDOMDocument

Detaillierte Erläuterung der XML-Betriebsmethoden


PHP XML-Operationsklasse
DOMDocument


Lösung für das Problem verstümmelter chinesischer Schriftzeichen beim Speichern von XML in PHP
DOMDocument


Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie PHP das Parsen und Generieren von XML basierend auf DOMDocument implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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