PHP 原生 DOM 物件操作 XML

發表於2016-10-12

對於操作XML型別檔案,PHP內建有一套DOM物件可以進行處理。對XML的操作,從建立、新增到修改、刪除都可以使用DOM物件中的函式來進行。

建立

建立一個新的XML檔案,並且寫入一些資料到這個XML檔案中。

上面的程式碼段可以建立一個XML檔案,並新增一些資訊到這個檔案中,包括值和屬性,最終形成的檔案為當前目錄下的t.xml,可以看一下它的內容。

讀取XML資訊&新增新的屬性

以上一節建立的t.xml檔案為操作物件,讀取出t.xml檔案中的資訊,並給節點新增一個新的屬性count,其值為1。

看一下提取到的值:

再看一下現在的t.xml檔案的內容,count屬性已經新增上。

修改節點屬性&節點值

以上一節中的t.xml檔案為操作物件,修改一下obj屬性是cpu的節點的count值,新的值為count+1。

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

刪除節點

要新增就會有刪除。以上節的t.xml檔案為操作物件,刪除obj=disk的節點。

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

向根節點中新增新的子節點

以上一節的t.xml為操作物件,向根節點EventList中新增一個新的子節點。

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

關於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個值可以選。每個節點都包含多個屬性,它可以以一種鍵值對陣列的形式表現出來,如下所示:

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

相關文章