用 sax 方式的時候,要自己構建3個函數,而且要直接用這三的函數來返回數據,要求較強的邏輯。在處理不同結構的 xml 的時候,還要重新進行構造這三個函數,麻煩!
用 dom 方式,倒是好些,但是他把每個節點都看作是一個 node,,操作起來要寫好多的代碼,麻煩!
網上有好多的開源的 xml 解析的類庫,以前看過幾個,但是心里總是覺得不踏實,感覺總是跟在別人的屁股后面。
這幾天在搞 Java,挺累的,所以決定換換腦袋,寫點 PHP 代碼,為了防止以后 XML 解析過程再令我犯難,就花了一天的時間寫了下面一個 XML 解析的類,于是就有了下面的東西。
實現方式是通過包裝“sax方式的解析結果”來實現的。總的來說,對于我個人來說挺實用的,性能也還可以,基本上可以完成大多數的處理要求。
功能:
1/ 對基本的 XML 文件的節點進行 查詢 / 添加 / 修改 / 刪除 工作。
2/ 導出 XML 文件的所有數據到一個數組里面。
3/ 整個設計采用了 OO 方式,在操作結果集的時候,使用方法類似于 dom
缺點:
1/ 每個節點最好都帶有一個id(看后面的例子),每個“節點名字”=“節點的標簽_節點的id”,如果這個 id 值沒有設置,程序將自動給他產生一個 id,這個 id 就是這個節點在他的上級節點中的位置編號,從 0 開始。
2/ 查詢某個節點的時候可以通過用“|”符號連接“節點名字”來進行。這些“節點名字”都是按順序寫好的上級節點的名字。
使用說明:
運行下面的例子,在執行結果頁面上可以看到函數的使用說明
代碼是通過 PHP5 來實現的,在 PHP4 中無法正常運行。
由于剛剛寫完,所以沒有整理文檔,下面的例子演示的只是一部分的功能,代碼不是很難,要是想知道更多的功能,可以研究研究源代碼。
目錄結構:
test.php<?xml version="1.0" encoding="GB2312"?>
<shop>
<name>華聯</name>
<address>北京長安街-9999號</address>
<desc>連鎖超市</desc>
<cat id="food">
<goods id="food11">
<name>food11</name>
<price>12.90</price>
</goods>
<goods id="food12">
<name>food12</name>
<price>22.10</price>
<desc creator="hahawen">好東西推薦</desc>
</goods>
</cat>
<cat>
<goods id="tel21">
<name>tel21</name>
<price>1290</price>
新聞熱點
疑難解答