- 相關(guān)推薦
php操作xml的各種方法解析
PHP提供了一整套的讀取 XML文件的方法,很容易的就可以編寫基于 XML的腳本程序。本章將要介紹 PHP與 XML的操作方法,并對(duì)幾個(gè)常用的 XML類庫做一些簡要介紹。下面是小編整理的php操作xml的各種方法解析,就跟隨百分網(wǎng)小編一起去了解下吧,想了解更多相關(guān)信息請(qǐng)持續(xù)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
XML是一種流行的半結(jié)構(gòu)化文件格式,以一種類似數(shù)據(jù)庫的格式存儲(chǔ)數(shù)據(jù)。在實(shí)際應(yīng)用中,一些簡單的、安全性較低的數(shù)據(jù)往往使用 XML文件的格式進(jìn)行存儲(chǔ)。這樣做的好處一方面可以通過減少與數(shù)據(jù)庫的交互性操作提高讀取效率,另一方面可以有效利用 XML的優(yōu)越性降低程序的編寫難度。
PHP提供了一整套的讀取 XML文件的方法,很容易的就可以編寫基于 XML的腳本程序。本章將要介紹 PHP與 XML的操作方法,并對(duì)幾個(gè)常用的 XML類庫做一些簡要介紹。
1 XML簡介
XML是“可擴(kuò)展性標(biāo)識(shí)語言(eXtensible Markup Language)”的縮寫,是一種類似于 HTML的標(biāo)記性語言。但是與 HTML不同,XML主要用于描述數(shù)據(jù)和存放數(shù)據(jù),而 HTML主要用于顯示數(shù)據(jù)。
XML是一種“元標(biāo)記”語言,開發(fā)者可以根據(jù)自己的需要?jiǎng)?chuàng)建標(biāo)記的名稱。例如,下面的 XML代碼可以用來描述一條留言。
復(fù)制代碼 代碼如下:
<thread>
<title>Welcome</title>
<author>Simon</author>
<content>Welcome to XML guestbook!!</content>
</thread>
其中,<thread>與</thread>標(biāo)簽標(biāo)記了這是一段留言。在留言中有標(biāo)題、作者、內(nèi)容,完整的表述了一條留言信息。
在一個(gè) XML文件的頂部,通常使用<?xml version=”1.0″?>來標(biāo)識(shí) XML數(shù)據(jù)的開始和 XML數(shù)據(jù)使用標(biāo)準(zhǔn)的版本信息。在瀏覽器中訪問 XML文件可以看到層次分明的 XML數(shù)據(jù)信息,如圖 1所示。
XML的發(fā)展非常迅速,近些年來很多軟件開發(fā)商都開始采用 XML的開發(fā)標(biāo)準(zhǔn)進(jìn)行應(yīng)用程序的開發(fā)。并且,很多新興技術(shù)都架構(gòu)在 XML數(shù)據(jù)之上。這意味著 XML將與 HTML一樣成為 Web技術(shù)不可或缺的一部分。
2 簡單的 XML操作
在實(shí)際應(yīng)用中,PHP與 XML的交互操作應(yīng)用非常廣泛。SimpleXML組件是 PHP5新增加的一個(gè)簡
單的 XML操作組件,與傳統(tǒng)的 XML組件相比,SimpleXML組件的使用非常簡單。本節(jié)將對(duì)使用
SimpleXML組件操作 XML的方法做一下詳細(xì)介紹。
2.1 創(chuàng)建一個(gè) SimpleXML對(duì)象
SimpleXML 對(duì)象是用來臨時(shí)存儲(chǔ) XML數(shù)據(jù)的臨時(shí)變量,對(duì) XML進(jìn)行的操作都是通過操作 SimpleXML對(duì)象來完成的。SimpleXML組件提供了兩種創(chuàng)建 SimpleXML對(duì)象的方法。第一種方法是使用 simplexml_load_string函數(shù)讀取一個(gè)字符串型變量中的 XML數(shù)據(jù)來完成創(chuàng)建的,其語法格式如下所示。
simplexml_load_string(string data)
這里的 data變量用于存儲(chǔ) XML數(shù)據(jù)。以下代碼使用 simplexml_load_string函數(shù)創(chuàng)建了一個(gè) SimpleXML對(duì)象
復(fù)制代碼 代碼如下:
<?php
$data = <<<XML //定義 XML數(shù)據(jù)
<?xml version='1.0′?>
<departs>
<depart>
<name>production support</name>
<employees>
<employee>
<serial_no>100001</serial_no>
<name>Simon</name>
<age>24</age>
<birthday>1982-11-06</birthday>
<salary>5000.00</salary>
<bonus>1000.00</bonus>
</employee>
<employee>
<serial_no>100002</serial_no>
<name>Elaine</name>
<age>24</age>
<birthday>1982-01-01</birthday>
<salary>6000.00</salary>
<bonus>2000.00</bonus>
</employee>
</employees>
</depart>
<depart>
<name>testing center</name>
<employees>
<employee>
<serial_no>110001</serial_no>
<name>Helen</name>
<age>23</age>
<birthday>1983-07-21</birthday>
<salary>5000.00</salary>
<bonus>1000.00</bonus>
</employee>
</employees>
</depart>
</departs>
XML;
$xml = simplexml_load_string($data); //創(chuàng)建 SimpleXML對(duì)象
print_r($xml); //輸出 XML
?>
在上面的例子中,$data變量存儲(chǔ)了一段 XML數(shù)據(jù)。 simplexml_load_string函數(shù)將變量$data轉(zhuǎn)化成 SimpleXML對(duì)象。通過 print_r函數(shù)的輸出可以看出該對(duì)象的結(jié)構(gòu),運(yùn)行結(jié)果如下所示。
復(fù)制代碼 代碼如下:
SimpleXMLElement Object
(
[depart] => Array
(
[0] => SimpleXMLElement Object
(
[name] => production support
[employees] => SimpleXMLElement Object
( [employee] => Array (
[0] => SimpleXMLElement Object
( [serial_no] => 100001
[name] => Simon
[age] => 24
[birthday] => 1982-11-06
[salary] => 5000.00
[bonus] => 1000.00
)
[1] => SimpleXMLElement Object
( [serial_no] => 100002
[name] => Elaine
[age] => 24
[birthday] => 1982-01-01
[salary] => 6000.00
[bonus] => 2000.00
)
)
)
)
[1] => SimpleXMLElement Object
(
[name] => testing center
[employees] => SimpleXMLElement Object
(
[employee] => SimpleXMLElement Object
(
[serial_no] => 110001
[name] => Helen
[age] => 23
[birthday] => 1983-07-21
[salary] => 5000.00
[bonus] => 1000.00
)
)
)
)
)
從輸出結(jié)果可以看出,SimpleXML對(duì)象的結(jié)構(gòu)與 XML數(shù)據(jù)的格式完全相同。
第二種方法是使用 simplexml_load_flie函數(shù)讀取一個(gè) XML文件來完成創(chuàng)建的,其語法格式如下所示。
simplexml_load_file(string filename)
這里的 filename變量是用于存儲(chǔ) XML數(shù)據(jù)文件的文件名及其所在路徑。以下代碼使用 simplexml_load_file函數(shù)來創(chuàng)建了一個(gè) SimpleXML對(duì)象。
復(fù)制代碼 代碼如下:
<?php
$xml = simplexml_load_file('example.xml'); //創(chuàng)建 SimpleXML對(duì)象
print_r($xml); //輸出 XML
?>
其中,example.xml存儲(chǔ)的數(shù)據(jù)與上面的$data完全相同,運(yùn)行結(jié)果也與上面完全相同。
上面兩種方法實(shí)現(xiàn)了同樣的功能,其區(qū)別就在于 XML的數(shù)據(jù)源不同。如果 XML的數(shù)據(jù)源在 PHP腳本文件中,則需要使用 simplexml_load_string來進(jìn)行創(chuàng)建。如果 XML的數(shù)據(jù)源在一個(gè)單獨(dú)的 XML文件中,則需要使用 simplexml_load_file來進(jìn)行創(chuàng)建。
2.2 讀取 SimpleXML對(duì)象中的 XML數(shù)據(jù)
前面介紹了使用 print_r函數(shù)來讀取 SimpleXML對(duì)象中的數(shù)據(jù),其返回結(jié)果與數(shù)組的結(jié)構(gòu)類似。顯然,這種顯示方式在實(shí)際應(yīng)用中是不可取的。在這里將介紹其他的幾種讀取 SimpleXML對(duì)象中 XML數(shù)據(jù)的方法。
1.var_dump函數(shù)顯示對(duì)象詳細(xì)信息
var_dump函數(shù)可以用于顯示 SimpleXML對(duì)象的詳細(xì)信息,與 print_r函數(shù)相比,var_dump函數(shù)顯示的信息更為完整,其語法如下所示。
void var_dump(object1, object2 … )
以下代碼使用 var_dump函數(shù)輸出了上面例子中對(duì)象的詳細(xì)信息。
復(fù)制代碼 代碼如下:
<?php $xml = simplexml_load_file('example.xml'); //創(chuàng)建 SimpleXML對(duì)象 var_dump($xml); //輸出 XML ?>
運(yùn)行結(jié)果如下所示。
復(fù)制代碼 代碼如下:
object(SimpleXMLElement)#1 (1) { ["depart"]=> array(2) {
[0]=>
object(SimpleXMLElement)#2 (2) {
["name"]=>
string(18) “production support”
["employees"]=>
object(SimpleXMLElement)#4 (1) {
["employee"]=>
array(2) {
[0]=>
object(SimpleXMLElement)#5 (6) {
["serial_no"]=>
string(6) “100001″
["name"]=>
string(5) “Simon”
["age"]=>
string(2) “24″
["birthday"]=>
string(10) “1982-11-06″
["salary"]=>
string(7) “5000.00″
["bonus"]=>
string(7) “1000.00″
}
[1]=>
object(SimpleXMLElement)#6 (6) {
["serial_no"]=>
string(6) “100002″
["name"]=>
string(6) “Elaine”
["age"]=>
string(2) “24″
["birthday"]=>
string(10) “1982-01-01″
["salary"]=>
string(7) “6000.00″
["bonus"]=>
string(7) “2000.00″
}
}
}
}
[1]=>
object(SimpleXMLElement)#3 (2) {
["name"]=>
string(14) “testing center”
["employees"]=>
object(SimpleXMLElement)#7 (1) {
["employee"]=>
object(SimpleXMLElement)#8 (6) {
["serial_no"]=>
string(6) “110001″
["name"]=>
string(5) “Helen”
["age"]=>
string(2) “23″
["birthday"]=>
string(10) “1983-07-21″
["salary"]=>
string(7) “5000.00″
["bonus"]=>
string(7) “1000.00″
}}}}}
與前面 print_r輸出的結(jié)果相比較,var_dump函數(shù)的輸出結(jié)果的結(jié)構(gòu)更為嚴(yán)謹(jǐn),并且將對(duì)象中的每一個(gè)屬性的數(shù)據(jù)類型均作出分析。在實(shí)際應(yīng)用中,var_dump函數(shù)往往用于程序調(diào)試時(shí)的對(duì)象檢測。
2.讀取 XML數(shù)據(jù)中的標(biāo)簽
與操作數(shù)組類型的變量類似,讀取 XML也可以通過類似的方法來完成。例如,如果需要讀取上面 XML數(shù)據(jù)中每一個(gè)“ depart”標(biāo)簽下的“name”屬性,可以通過使用 foreach函數(shù)來完成,如以下代碼
所示。
復(fù)制代碼 代碼如下:
<?php $xml = simplexml_load_file('example.xml'); foreach($xml->depart as $a)
{
echo “$a->name <BR>”;
}
?>
運(yùn)行結(jié)果如下所示。
【php操作xml的各種方法解析】相關(guān)文章:
php操作xml入門之xml基本介紹08-13
php解析XML文檔屬性并編輯的代碼09-28
PHP將XML轉(zhuǎn)為數(shù)組的方法06-18
PHP往XML中添加節(jié)點(diǎn)的方法11-05
PHP將XML轉(zhuǎn)為數(shù)組的方法詳解07-27
PHP文件與目錄操作的方法11-16
php數(shù)組操作方法10-18
PHP常用MySql操作的方法10-11