91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在PHP中利用原生DOM對象對XML進行操作

發布時間:2020-12-16 16:43:55 來源:億速云 閱讀:158 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何在PHP中利用原生DOM對象對XML進行操作,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

一、創建

創建一個新的XML文件,并且寫入一些數據到這個XML文件中。

/*
 * 創建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文件中

上面的代碼段可以創建一個XML文件,并添加一些信息到這個文件中,包括值和屬性,最終形成的文件為當前目錄下的t.xml,可以看一下它的內容。

<?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>

二、讀取XML信息&添加新的屬性

以上一節創建的t.xml文件為操作對象,讀取出t.xml文件中的信息,并給節點添加一個新的屬性count,其值為1。

/*
 * 讀取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>Object:$attr_obj;Info:$attr_info;Value:{$item->nodeValue}</pre>";
 $item->setAttribute('count',1);//添加新的屬性count=1
}
$dom->save('./t.xml');//保存修改

看一下提取到的值:

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

再看一下現在的t.xml文件的內容,count屬性已經添加上。

<?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>

三、修改節點屬性&節點值

以上一節中的t.xml文件為操作對象,修改一下obj屬性是cpu的節點的count值,新的值為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');

操作后的t.xml文件如下,要以看到obj=cpu的節點的count屬性已經改變,值也修改成功。

<?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>

四、刪除節點

要添加就會有刪除。以上節的t.xml文件為操作對象,刪除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');

看一下操作后的t.xml文件內容,obj=disk的節點已被成功刪除。

<?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>

向根節點中添加新的子節點

以上一節的t.xml為操作對象,向根節點EventList中添加一個新的子節點。

/*
 * 向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');

看一下操作后的t.xml文件內容,新的子節點已經被插入到根節點中。

<?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>

五、關于item($index)

item(index)是DOMNodeList類中的一個方法,它的做用是返回一個由索引指明的節點。而DOMDocument類中的getElementsByTagName(name)方法返回的正是一個DOMNodeList對象的實例,所以可以直接調用item(index)方法。以上節的t.xml為示例,如果e=dom?>getElementsByTagName(‘EventList′)獲取EventList節點的信息,因為EventList節點是根節點,有且僅有一個,所以它調用item(index)時,索引只有index=0可用,因為它只有1個;而如果e=dom?>getElementsByTagName(‘event′)獲取event節點的信息,因為event有4個,所以它調用item(index)時,索引$index={0,1,2,3} ,有4個值可以選。每個節點都包含多個屬性,它可以以一種鍵值對數組的形式表現出來,如下所示:

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

也可以當做對象的屬性來用,例如獲取這個節點的值:

/*
 * 關于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;
// }

關于如何在PHP中利用原生DOM對象對XML進行操作就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜兴市| 祁连县| 天等县| 东兴市| 遵义市| 宜宾市| 洪雅县| 昌邑市| 贵定县| 无棣县| 图片| 宿松县| 尚义县| 房产| 封丘县| 阳高县| 泗水县| 五指山市| 濮阳市| 龙里县| 通州区| 晋江市| 安多县| 乌苏市| 山丹县| 阿克| 太仆寺旗| 洪湖市| 建瓯市| 岢岚县| 阳曲县| 文水县| 鄯善县| 刚察县| 老河口市| 江北区| 浦县| 桦甸市| 措美县| 武冈市| 长治市|