Heim >Backend-Entwicklung >PHP-Tutorial >PHP implementiert Methoden für native DOM-Objekte zur Manipulation von XML
Jeder weiß, dass PHP für den Betrieb von XML-Dateien über eine Reihe integrierter DOM-Objekte zur Verarbeitung verfügt. XML-Operationen, vom Erstellen über das Hinzufügen bis hin zum Ändern und Löschen, können mithilfe von Funktionen im DOM-Objekt ausgeführt werden. Der folgende Artikel stellt die Bedienung anhand von Beispielcode vor. Freunde in Not können darauf zurückgreifen.
1. Erstellen Sie
Erstellen Sie eine neue XML-Datei und schreiben Sie einige Daten in diese XML-Datei.
/* * 创建xml文件 */ $info = array( array('obj' => 'power','info' => 'power is shutdown'), array('obj' => 'memcache','info' => 'memcache used than 90%'), array('obj' => 'cpu','info' => 'cpu used than 95%'), array('obj' => 'disk','info' => 'disk is removed') );//用来写入的数据 $dom = new DOMDocument('1.0'); $dom->formatOutput = true;//格式化 $eventList = $dom->createElement('EventList');//创建根节点EventList $dom->appendChild($eventList);//添加根节点 for($i = 0; $i < count($info); $i++){ $event = $dom->createElement('event');//创建节点event $text = $dom->createTextNode('PHP'.$i);//创建文本节点,值为PHP0,PHP1... $event->appendChild($text);//将文本节点添加到节点event,做为节点event的值 $attr_obj = $dom->createAttribute('obj');//创建属性obj $attr_obj->value = $info[$i]['obj'];//为obj属性赋值 $event->appendChild($attr_obj);//将obj属性添加到event节点中,做为event节点的属性 $attr_info = $dom->createAttribute('info'); $attr_info->value = $info[$i]['info']; $event->appendChild($attr_info); $eventList->appendChild($event);//将event节点添加到根节点EventList中 } //echo $dom->saveXML(); $dom->save('./t.xml');//保存信息到当前目录下的t.xml文件中
Der obige Codeausschnitt kann eine XML-Datei erstellen und dieser Datei einige Informationen hinzufügen, einschließlich Werten und Attributen. Die endgültige Datei ist das aktuelle Verzeichnis t.xml unten können Sie einen Blick auf den Inhalt werfen.
<?xml version="1.0"?> <EventList> <event obj="power" info="power is shutdown">PHP0</event> <event obj="memcache" info="memcache used than 90%">PHP1</event> <event obj="cpu" info="cpu used than 95%">PHP2</event> <event obj="disk" info="disk is removed">PHP3</event> </EventList>
2. XML-Informationen lesen und neue Attribute hinzufügen
Über einem Die t Die im Abschnitt erstellte .xml-Datei ist das Operationsobjekt. Die Informationen in der t.xml-Datei werden ausgelesen und dem Knoten wird eine neue Attributanzahl mit dem Wert 1 hinzugefügt.
/* * 读取xml文件信息,并添加新的属性 */ $dom = new DOMDocument('1.0'); $dom->load('./t.xml');//加载要操作的文件 $list = $dom->getElementsByTagName('event');//获取event节点列表 foreach($list as $item){ $attr_obj = $item->getAttribute('obj');//获取属性obj的值 $attr_info = $item->getAttribute('info'); echo "<pre class="brush:php;toolbar:false">Object:$attr_obj;Info:$attr_info;Value:{$item->nodeValue}"; $item->setAttribute('count',1);//添加新的属性count=1 } $dom->save('./t.xml');//保存修改
Sehen Sie sich die extrahierten Werte an:
Object:power;Info:power is shutdown;Value:PHP0 Object:memcache;Info:memcache used than 90%;Value:PHP1 Object:cpu;Info:cpu used than 95%;Value:PHP2 Object:disk;Info:disk is removed;Value:PHP3
Schauen Sie sich den Inhalt der aktuellen t.xml-Datei noch einmal an. Das count-Attribut wurde hinzugefügt.
<?xml version="1.0"?> <EventList> <event obj="power" info="power is shutdown" count="1">PHP0</event> <event obj="memcache" info="memcache used than 90%" count="1">PHP1</event> <event obj="cpu" info="cpu used than 95%" count="1">PHP2</event> <event obj="disk" info="disk is removed" count="1">PHP3</event> </EventList>
3. Knotenattribute und Knotenwerte ändern
Wie im Der obige Abschnitt Die t.xml-Datei ist das Operationsobjekt. Ändern Sie das obj-Attribut so, dass es der Zählwert des CPU-Knotens ist. count+1
/* * 修改某一个节点的属性和值 */ $dom = new DOMDocument('1.0'); $dom->load('./t.xml'); $list = $dom->getElementsByTagName('event'); foreach($list as $item){ $attr_obj = $item->getAttribute('obj'); if($attr_obj == 'cpu'){//修改cpu的count属性,使其值+1 $attr_count = $item->getAttribute('count');//获取count属性的值 $item->setAttribute('count',$attr_count+1);//重置count属性的值 $item->nodeValue = 'Hello,Kitty';//重置节点的值 } } $dom->save('./t.xml');Die t.xml-Datei sieht nach dem Vorgang wie folgt aus: Sie können sehen, dass das Zählattribut des Knotens
geändert wurde wurde erfolgreich geändert. obj=cpu
<?xml version="1.0"?> <EventList> <event obj="power" info="power is shutdown" count="1">PHP0</event> <event obj="memcache" info="memcache used than 90%" count="1">PHP1</event> <event obj="cpu" info="cpu used than 95%" count="2">Hello,Kitty</event> <event obj="disk" info="disk is removed" count="1">PHP3</event> </EventList>
4. Knoten löschen
Wenn Sie es hinzufügen möchten, wird es gelöscht werden. Löschen Sie den Knoten, indem Sie die Datei t.xml im obigen Abschnitt als Operationsobjekt verwenden. obj=disk
/* * 删除节点 */ $dom = new DOMDocument('1.0'); $dom->load('./t.xml'); $list = $dom->getElementsByTagName('event'); foreach($list as $item){ if($item->getAttribute('obj') == 'disk'){//以obj=disk的节点为操作对象 $item->parentNode->removeChild($item);//删除节点 } } $dom->save('./t.xml');Sehen Sie sich den Inhalt der t.xml-Datei an, nachdem der Vorgang erfolgreich gelöscht wurde.
<?xml version="1.0"?> <EventList> <event obj="power" info="power is shutdown" count="1">PHP0</event> <event obj="memcache" info="memcache used than 90%" count="1">PHP1</event> <event obj="cpu" info="cpu used than 95%" count="2">Hello,Kitty</event> </EventList>Fügen Sie einen neuen untergeordneten Knoten zum Stammknoten hinzu Die t.xml im vorherigen Abschnitt ist das Operationsobjekt. Fügen Sie es hinzu Der Wurzelknoten EventList Fügt einen neuen untergeordneten Knoten hinzu.
/* * 向EventList中添加一个子节点 */ $dom = new DOMDocument('1.0'); $dom->load('./t.xml'); $event_list = $dom->getElementsByTagName('EventList');//获取根节点 $event = $dom->createElement('event','lenovo');//新建节点 $event_list->item(0)->appendChild($event);//将新建节点添加到根节点中 $event_attr_obj = $dom->createAttribute('obj'); $event_attr_obj->value = 'lenovo'; $event->appendChild($event_attr_obj); $event_attr_info = $dom->createAttribute('info'); $event_attr_info->value = 'thinkpad t430'; $event->appendChild($event_attr_info); $dom->save('./t.xml');Sehen Sie sich den Inhalt der t.xml-Datei an, nachdem der neue untergeordnete Knoten in den Stammknoten eingefügt wurde.
<?xml version="1.0"?> <EventList> <event obj="power" info="power is shutdown" count="1">PHP0</event> <event obj="memcache" info="memcache used than 90%" count="1">PHP1</event> <event obj="cpu" info="cpu used than 95%" count="2">Hello,Kitty</event> <event obj="lenovo" info="thinkpad t430">lenovo</event></EventList>
5. Über item($index)
ist DOMNodeList Eine Methode in einer Klasse, die einen durch ihren Index angegebenen Knoten zurückgibt. Die item(index)
-Methode in der DOMDocument-Klasse gibt eine Instanz eines DOMNodeList-Objekts zurück, sodass die getElementsByTagName(name)
-Methode direkt aufgerufen werden kann. Nehmen wir als Beispiel die t.xml im obigen Abschnitt: Wenn item(index)
die Informationen des EventList-Knotens abruft, gibt es nur einen, da der EventList-Knoten der Stammknoten ist. Wenn also item (Index) aufgerufen wird, ist der Index der Index ist nur index=0, weil es nur 1 gibt; und wenn e=dom−>getElementsByTagName(‘EventList′)
die Informationen des Ereignisknotens abruft, weil es 4 Ereignisse gibt, hat der Index e=dom−>getElementsByTagName(‘event′)
beim Aufrufen von item(index)
4 Werte wählen Sie aus. Jeder Knoten enthält mehrere Attribute, die in Form eines Arrays von Schlüssel-Wert-Paaren ausgedrückt werden können, wie unten gezeigt: $index={0,1,2,3}
object(DOMElement)#3 (18) { ["tagName"]=> string(5) "event" ["schemaTypeInfo"]=> NULL ["nodeName"]=> string(5) "event" ["nodeValue"]=> string(11) "Hello,Kitty" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> string(22) "(object value omitted)" ["nextSibling"]=> string(22) "(object value omitted)" ["attributes"]=> string(22) "(object value omitted)" ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(5) "event" ["baseURI"]=> string(36) "file:/H:/xampp/htdocs/demo/xml/t.xml" ["textContent"]=> string(11) "Hello,Kitty" }kann auch als verwendet werden ein Objekt Verwenden Sie beispielsweise die Attribute dieses Knotens, um den Wert dieses Knotens abzurufen:
/* * 关于item() */ $dom = new DOMDocument('1.0'); $dom->load('./t.xml'); $e = $dom->getElementsByTagName('event'); echo $e->item(2)->nodeValue; //var_dump($e->item(2)); // $e = $dom->getElementsByTagName('EventList'); // var_dump($e->item(0)); //var_dump($e->item(0)->baseURI); // for($i=0;$i<$e->length;$i++){ // echo $e->item($i)->nodeValue; // }Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels Ich hoffe, dass es für die Lernhilfe aller nützlich sein kann. Verwandte Empfehlungen:
PHP-Beispielcode für den regulären Abgleich von Datum und Uhrzeit (Zeitstempelkonvertierung)
implementiert durch PHP Benutzerdefiniertes Bild Beispiel für eine Funktion zum Zuschneiden in der Mitte [zum Testen verfügbar]
Verwenden Sie php, um den Beispielcode für die FLV-Videolänge zu erhalten
Das obige ist der detaillierte Inhalt vonPHP implementiert Methoden für native DOM-Objekte zur Manipulation von XML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!