網絡營銷培訓PHP下使用SimpleXML處理XML文件

1 SimpleXML 簡介網絡營銷培訓
要處理XML 文件,有兩種傳統的處理思路:SAX 和DOM。SAX 基於事件觸發機制,
對XML 文件進行一次掃描,完成要進行的處理;DOM 則將整個XML 文件構造爲一棵DOM
樹,經過對DOM 樹的遍歷完成處理。這兩種方法各有優缺點,SAX 的處理思路相對抽象,
DOM 的處理過程相對煩瑣,都不很適合新手的入門。
PHP5 推出了一套新的XML 處理函數,即SimpleXML。名如其實,SimpleXML 自己小
巧精幹,只提供了少許的幾個方法函數,但用它處理起XML 文件功能卻很是強大,操做也
很是的簡單。
首先,它提供有簡單的函數能夠從XML 文檔、字符串、或DOM 對象上直接構造出
SimpleXMLElement 對象;其次,SimpleXMLElement 提供有簡單的方法能夠進行屬性、子節
點、和XPath 的操做;然而,SimpleXML 最簡單的地方是,它提供有使用標準對象的屬性和
對象迭代器進行節點操做的方法,這一處理思路使得用PHP 對XML 文檔的處理獲得了極大
的簡化。
2 SimpleXML 入門示例
下面咱們經過一些小的代碼片斷,稍微瞭解一下SimpleXML 的強大和簡潔。爲舉例方便,
咱們使用一個Messages.xml 文件,裏面包含這樣一段XML 代碼:
Messages.xml
 
<?xml version='1.0' standalone='yes'?>
<Messages>
<msg id='1'>
<title>This is Title</title>
<content>Here is Content</content>
<time>2008-03-20 21:50:23</time>
<reply id='11'>reply 1</reply>
<reply id='12'>reply 2</reply>
</msg>
</Messages>php


這是一篇保存有留言信息的XML 文檔,每條信息包括屬性id,子節點title、content、time
以及若干條對於它的回覆信息,每條回覆包括屬性id 及回覆的內容。
用SimpleXML 處理並輸出此XML 文檔內容的過程以及方法以下。
(1) 構造SimpleXMLElement 對象
代碼片段
$xml = simplexml_load_file('Messages.xml');
若是這段xml 已經被讀入到一個字符串$messages 中,則可使用以下語句:
代碼片段
$xml = simplexml_load_string('Messages.xml');
(2)輸出留言1 的標題
代碼片段
//可使用屬性的方式訪問子節點,經過節點的標籤名可直接獲得節點的內容
echo $xml->msg->title;
(3)輸出留言1 的第一條回覆信息
代碼片段
//同級別的多個同名節點自動成爲數組,能夠經過索引下標訪問其內容
echo $xml->msg->reply[0];
(4)輸出留言的id
代碼片段
//節點的屬性與值被封裝成爲關聯數組的鍵與值
echo $xml->msg['id'];
(5)輸出第二條回覆的id
代碼片段
//成爲二維數組,第一維表示節點,第二維表示屬性
echo $xml->msg->reply[1][ 'id'];
(6)依次輸出全部回覆的id
代碼片段
//使用 foreach 對同名節點進行遍歷
foreach ($xml->msg->reply as $reply){
echo $reply['id'];
}
(7)使用XPath 檢索全部的回覆信息
代碼片段
//xpath 方法直接檢索定位(//表示任意深度)
foreach ($xml->xpath('//reply') as $reply){
echo $reply.'<br>';
}
(8)遍歷留言1 全部的子節點
代碼片段
//children 方法獲得全部子節點
foreach ($xml->msg->children() as $field){
echo $field.'<br>';
}
(9)從新設置留言1 的發佈時間
代碼片段
//直接設置屬性
$xml->msg->time = '2008-03-21 00:53:12';
(10)設置回覆2 的id 屬性
代碼片段
//設置管理數組的值
$xml->msg->reply[1]['id'] = '222';
(11)新增一個描述消息做者的字段
代碼片段
//直接設置屬性
$xml->msg->author = 'zhangsan';
(12)將消息的做者保存爲屬性
代碼片段
//設置關聯數組的key
$xml->msg['author'] = 'zhangsan';
(13)從新保存對象到文件
代碼片段
//保存
$xml->asXML('MessagesNew.xml');
 數組

附錄:網絡

PHP SimpleXML 函數

PHP:指示支持該函數的最先的 PHP 版本。dom




__construct() 建立一個新的 SimpleXMLElement 對象。 5
addAttribute() 給 SimpleXML 元素添加一個屬性。 5
addChild() 給 SimpleXML 元素添加一個子元素。 5
asXML() 從 SimpleXML 元素獲取 XML 字符串。 5
attributes() 獲取 SimpleXML 元素的屬性。 5
children() 獲取指定節點的子。 5
getDocNamespaces() 獲取 XML 文檔的命名空間。 5
getName() 獲取 SimpleXML 元素的名稱。 5
getNamespaces() 從 XML 數據獲取命名空間。 5
registerXPathNamespace() 爲下一次 XPath 查詢建立命名空間語境。 5
simplexml_import_dom() 從 DOM 節點獲取 SimpleXMLElement 對象。 5
simplexml_load_file() 從 XML 文檔獲取 SimpleXMLElement 對象。 5
simplexml_load_string() 從 XML 字符串獲取 SimpleXMLElement 對象。 5
xpath() 對 XML 數據運行 XPath 查詢。

5函數

轉:http://www.binghe.org/?p=159this

 

說明下:simplexml 獲取的節點數據類型都是對象spa

例:xml

$this -> item_no = $simpleXmlObj -> SKU;
        var_dump($this -> item_no);對象

結果是:索引

object(SimpleXMLElement)[5]
string'SKU000001'(length=9)

若是要用來作運算比較等須要轉換類型:

例:

$this -> item_no = (string) $simpleXmlObj -> SKU;
        var_dump($this -> item_no);

網絡營銷培訓結果:
string'SKU000001'(length=9) (fblww-0221)

相關文章
相關標籤/搜索