php提供幾個解析xml的類別或方法,包括:Xml parser、 SimpleXML,、XMLReader,、DOMDocument。
XML Expat Parser:
XML Parser使用Expat XML解析器。 Expat是一種基於事件的解析器,它把XML文件視為一系列事件。當某個事件發生時,它會呼叫一個指定的函數來處理它。 Expat是無驗證的解析器,忽略任何連結到文件的DTD。 (推薦學習:PHP程式設計從入門到精通)
但是,如果文件的形式不好,則會以錯誤訊息結束。由於它基於事件,且無驗證,Expat具有快速並適合web應用程式的特性。
XML Parser的優點是效能好,因為它不是將整個xml文件載入記憶體後再處理,而是邊解析邊處理。但也因為如此,它不適合那些要對xml結構做動態調整、或基於xml上下文結構做複雜操作的需求。
如果你只是要解析處理一個結構良好的xml文檔,那麼它可以很好的完成任務。要注意的是XML Parser只支援三種編碼格式:US-ASCII, ISO-8859-1和UTF-8,如果你的xml資料是其他編碼,需要先轉換成以上三個之一。
XML Parser常用的解析方式大致有兩種(其實就是兩個函數):xml_parse_into_struct和xml_set_element_handler。
xml_parse_into_struct
此方法是將xml資料解析到兩個陣列中:
index陣列-包含指向Value 陣列中值的位置的指標
value數組-包含來自被解析的XML 的資料
SimpleXML
SimpleXML是PHP5後提供的一套簡單易用的xml工具集,可以把xml轉換成方便處理的對象,也可以組織產生xml資料。不過它不適用於包含namespace的xml,而且要確保xml格式完整(well-formed)。
它提供了三個方法:simplexml_import_dom、simplexml_load_file、simplexml_load_string,函數名稱很直觀地說明了函數的作用。三個函數都會傳回SimpleXMLElement對象,資料的讀取/新增都是透過SimpleXMLElement操作。
SimpleXML的優點是開發簡單,缺點是它會將整個xml載入記憶體後再處理,所以在解析超多內容的xml文件時可能會力不從心。如果是讀取小文件,而且xml中也不包含namespace,那SimpleXML是很好的選擇。
XMLReader
XMLReader也是PHP5之後的擴充功能(5.1後預設安裝),它就像遊標一樣在文件流中移動,並在每個節點處停下來,操作起來很靈活。它提供了對輸入的快速和非快取的串流訪問,可以讀取流或文檔,使用戶從中提取數據,並跳過對應用程式沒有意義的記錄。
使用DomDocument解析XML檔案
操作步驟:
1,建立節點使用createElement方法,
2,建立文本內容使用createTextNode方法,
3,新增子節點使用appendChild方法,
4,建立屬性使用createAttribute方法
以上是php解析xml的幾種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!