php解析xml的幾種方式


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方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM