Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung, wie PHP DOMDocument zum Betrieb von XML verwendet

Detaillierte Erklärung, wie PHP DOMDocument zum Betrieb von XML verwendet

巴扎黑
巴扎黑Original
2017-08-14 10:44:049039Durchsuche

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

Das Beispiel in diesem Artikel beschreibt die Methode des PHP-Parsens und Generierens von XML basierend auf DOMDocument. Ich teile es Ihnen als Referenz wie folgt mit:

Ich habe einige Kenntnisse über SimpleXML-Operationen auf XML mit Ihnen geteilt, aber in PHP gibt es zusätzlich zu simplexml auch DOMDocument. Dieses Mal werde ich mich auf Folgendes konzentrieren Verwendung von DOMDocument. XML generieren und XML separat analysieren

1. Die XML-Erzeugung von DOMDocument ist etwas komplizierter als die vorherige SimplexML Ich denke, simplexml ist wie dom4j in Java, das Prinzip ist in jedem Fall dasselbe. 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

Wenn Sie sich diesen Code genau ansehen, ist er eigentlich nicht kompliziert. Es bestehen möglicherweise einige Zweifel das id-Attribut, text Der Knoten muss auch unter dem DOMDocument gemountet werden, und dann muss der Textknoten unter dem Attribut gemountet werden. Werfen wir einen Blick auf die generierte XML

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

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

2. DOMDocument-Analyse

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

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

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

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie PHP DOMDocument zum Betrieb von XML verwendet. 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