程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP創建與解析XML

PHP創建與解析XML

編輯:關於PHP編程

隨著 XML 不斷的升溫, PHP 提供了大量的用來專門處理 XML 的標准庫 ( 類庫 ) 來操控 XML 。例如 ,DOM XML 擴展的改寫、 SimpleXML 擴展、 SOAP 擴展,還有PHP5.1 的 XMLReader 和XMLWrite 擴展等。


一. 使用 SimpleXML 操控 XML

  要處理 XML 文件,有兩種傳統的處理思路: SAX 和 DOM 。 SAX 基於事件觸發機制,對 XML 文件進行一次掃描,完成要進行的處理; DOM 則將整個 XML 文件構造為一棵 DOM樹,通過對 DOM 樹的遍歷完成處理。這兩種方法各有優缺點, SAX 的處理思路相對抽象,DOM 的處理過程相對煩瑣,都不很適合新手的入門。PHP5 推出了一套新的 XML 處理函數,即 SimpleXML 。名如其實, SimpleXML 本身小巧精干,只提供了少量的幾個方法函數,但用它處理起 XML 文件功能卻非常強大,操作也非常的簡單。


[php] view plaincopy
1. 創建 XML 文件 
 
$ _ xml = <<<xml 
 
<?xml version="1.0" encoding="utf-8"?> 
 
<root> 
 
<version>1.0</ version > 
 
<info>xml 解析測試 </info> 
 
<user> 
 
<name> 滅盡塵埃 </name> 
 
<url>http://www.google.com.hk</url> 
 
<author sex=" 男 "> 楊澤 </author> 
 
</user> 
 
<user> 
 
<name> CSDN </name> 
 
<url>http://www.csdn.net</url> 
 
<author sex=" 女 "> 誰誰誰 </author> 
 
</user> 
 
<user> 
 
<name> 電驢 </name> 
 
<url>http://www.verycd.com</url> 
 
<author sex=" 男 "> 姓黃的 </author> 
 
</user> 
 
</root> 
 
xml; 
 
$ _sxe = new SimpleXMLElement( $ _xml ); // 創建對象解析 xml 字符串 
 
$ _sxe ->asXML( 'test.xml' ); // 生成 XML 文件 
 
  
 
2. 載入 XML 文件 
 
$ _sxe = simplexml_load_file( "test.xml" ); // 載入 XML 文件 
 
var_dump( $ _sxe ); // 輸出相關信息 
 
print_r( $ _sxe ); // 輸出主要信息 
 
Reflection::export( new ReflectionClass( $sxe )); // 用反射查看詳情 
 
  
 
3. 解析 XML 文件 
 
$ _sxe = simplexml_load_file( "test.xml" ); // 載入 XML 文件 
 
var_dump( $ _sxe ); // 輸出相關信息 
 
print_r( $ _sxe ); // 輸出主要信息 
 
Reflection::export( new ReflectionClass( $ _sxe )); // 用發射查看詳情 
 
echo $_ sxe ->asXML(); // 打印整個 XML 
 
  
 
4. 讀出 XML 數據 
 
$_ sxe = simplexml_load_file( "test.xml" ); 
 
// 讀取一級節點的值,比如 version 標簽 
 
echo $_ sxe ->version; 
 
// 如果有多個,可以設置它的數字下標 
 
echo $_ sxe ->version[ 2 ]; 
 
// 如果想要全部打印出來,可以用遍歷 
 
foreach ( $_ sxe ->version as $_version ) { 
 
echo '[' . $_version . ']' ; 
 

 
// 訪問二級節點的 name 
 
echo $_ sxe ->user[ 1 ]->name; 
 
// 獲取所有二級節點的 name 值 
 
foreach ( $_ sxe ->user as $_user ) { 
 
echo '[' . $_user ->name. ']' ; 
 

 
// 獲取二級節點的標簽的屬性 
 
echo $_ sxe ->user[ 1 ]-> author ->attributes(); 
 
  
 
5. 使用 XPath 來獲取節點 
 
$_ sxe = simplexml_load_file( "test.xml" ); 
 
// 使用 XPath 獲取節點信息www.2cto.com 
 
$_version = $_ sxe ->xpath( '/root/version' ); 
 
echo $_version [ 1 ]; 
 
// 遍歷 version 
 
foreach ( $_version as $_v ) { 
 
echo '[' . $_v . ']' ; 
 

 
// 訪問二級節點 
 
$_user = $_ sxe ->xpath( '/root/user' ); 
 
echo $_use r [ 2 ]->name; 
 
// 遍歷二級節點 
 
foreach ( $_user as $_u ) { 
 
echo '[' . $_u ->name. ']' ; 
 

 
// 訪問屬性 
 
echo $_user [ 1 ]->author->attributes(); 
 
  
二. 使用 DOMDocument 操控 XML

  很多情況下 , 手工生成標記要求從上到下生成文檔 , 必須保證標簽都是完整的 , 開始和結束標簽。盡管借助於一些 PHP 函數或類可以有所改善,不過 PHP 還提供了一組更有幫助的內置對象和函數。文檔對象模型( Document Object Model , DOM )提供了一個樹狀結構,能很容易創建和處理標簽。
[php] view plaincopy
1. DOMDocument 解析 XML 
 
// 創建一個 DOMDocument() 
 
$_doc = new DOMDocument(); 
 
// 載入 xml 
 
$_doc ->load( 'test.xml' ); 
 
// 取 version 標簽 
 
$_version = $_doc ->getElementsByTagName( 'version' ); 
 
echo $_version ->item( 2 )->nodeValue; 
 
// 遍歷 version 標簽 
 
foreach ( $_version as $v ) { 
 
echo $v ->nodeValue; 
 

 
2. DOMDocument 生成 XML 
 
// 聲明 xml 
 
$_doc = new DOMDocument( '1.0' , 'utf-8' ); 
 
// 排版格式 
 
$_doc ->formatOutput = true ; 
 
// 創建一個主標簽 
 
$_root = $_doc ->createElement( 'root' ); 
 
// 創建一個一級標簽 version 
 
$_version = $_doc ->createElement( 'version' ); 
 
// 給 version 標簽裡賦值 
 
$_versionTextNode = $_doc ->createTextNode( '1.0' ); 
 
// 將值放入 version 標簽裡 
 
$_version ->appendChild( $_versionTextNode ); 
 
// 將一級標簽 version 放入 root 裡 
 
$_root ->appendChild( $_version ); 
 
// 將主標簽寫入 xml 
 
$_doc ->appendChild( $_root ); 
 
// 生成 xml 
 
$_doc ->save( 'aaa.xml' ); 
 


摘自  geniusxiaoyu的專欄 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved