php xml 入門學(xué)習(xí)資料
更新時(shí)間:2011年01月01日 19:45:40 作者:
今天做項(xiàng)目時(shí)遇到一個(gè)問(wèn)題:需要?jiǎng)討B(tài)更新主頁(yè)上的圖片,以示本站不是做完了就算了,是有人一直在維護(hù)。好了,需求有了,如何實(shí)現(xiàn)?!
起因:
今天做項(xiàng)目時(shí)遇到一個(gè)問(wèn)題:需要?jiǎng)討B(tài)更新主頁(yè)上的圖片,以示本站不是做完了就算了,是有人一直在維護(hù)。好了,需求有了,如何實(shí)現(xiàn)?!
我的想法如下:
圖片存放位置:放在一個(gè)文件夾中;圖片的類型:不能固定了,只要是圖片就可以上傳顯示;圖片名字:按原始名字有點(diǎn)不正規(guī),應(yīng)該重新命名一下。
顯示的位置:這就需要對(duì)圖片指定相應(yīng)的id,這個(gè)id是固定的,要與圖片一一對(duì)應(yīng)。于是就有一個(gè)記錄一一對(duì)應(yīng)的關(guān)系文件,可以選擇csv文件,選擇數(shù)據(jù)庫(kù)記錄,最后決定選擇xml,這個(gè)東西在學(xué)校一直沒(méi)學(xué)懂,我一直回避使用這東西,怕麻煩。今天算是挑戰(zhàn)一下,花了一下午時(shí)間,終于有所收獲。
學(xué)習(xí)步驟:
明確目標(biāo): 1、理解xml的結(jié)構(gòu);2、如何動(dòng)態(tài)建立xml文件;3、如何讀取和修改xml文件
一、 xml的結(jié)構(gòu)是樹(shù)形結(jié)構(gòu):
這個(gè)好理解。簡(jiǎn)單寫(xiě)一個(gè):
<pictures>
<picture>
<id>1</id>
<name>pic 1</name>
</picture>
<picture>
<id>2</id>
<name>pic 2</name>
</picture>
<picture>
<id>3</id>
<name>pic 3</name>
</picture>
</pictures>
二、我使用的php創(chuàng)建:
1. 定義一個(gè)DOM對(duì)象: $dom = new DomDocument('1.0');
2. 添加子元素:$dom->appendChild($dom->createElement("pictures"))
內(nèi)存中的原型是:<pictures></pictures>
繼續(xù)往里邊加子元素:*->appendChild($dom->createElement("picture"));
繼續(xù)加: **->appendChild($dom->createElement("id"));
不加子元素了,加節(jié)點(diǎn): ***->appendChild($dom->createNode("1"))
上面的*代表上上一行的代碼;這樣一來(lái)就可以寫(xiě)成一行:
$dom->appendChild($dom->createElement("pictures"))->appendChild($dom->createElement("picture"))
->appendChild($dom->createElement("id"))->appendChild($dom->createNode("1"));
現(xiàn)在內(nèi)存中應(yīng)該是這樣的:<pictures><picture><id>1</id></picture></pictures>
顯然里要求還遠(yuǎn),很容易看懵的。
因此一般這么寫(xiě): $pictures = $dom->appendChild($dom->createElement("pictures"));
$picture = $pictures->appendChild($dom->createElement("picture"));
$id = $picture->appendChild($dom->createElement("id"));
$id->appendChild($dom->createNode("1"));
下面還可以接著創(chuàng)建name節(jié)點(diǎn):
$name = $picture->appendChild($dom->createElement("name"));
$name->appendChild($dom->createNode("pic 1"));
接下來(lái)還要接著創(chuàng)建picture節(jié)點(diǎn):
$picture = $pictures->appendChild($dom->createElement("picture"));
其實(shí)這些麻煩的事可以寫(xiě)個(gè)for循環(huán)來(lái)實(shí)現(xiàn)。
生成xml文件:
$dom->formatOutput = true;//設(shè)置格式化輸出
$dom->save("erhsh.xml");//保存xml文件
三、讀取xml文件。
1、還是定義一個(gè)DOM對(duì)象;$dom->new DomDocument();
2、加載xml文件:$dom->load("erhsh.xml");
3、按照節(jié)點(diǎn)的名字取得節(jié)點(diǎn)集合:$dom->getElementByTagName("pictures");
這種方法有點(diǎn)麻煩,參考文件:
http://www.dbjr.com.cn/article/25853.htm
不過(guò)有一種我喜歡的方法:simplexml_load_file("erhsh.xml");
此方法可以把xml文件的內(nèi)容轉(zhuǎn)換成對(duì)象的形式,使用"->"結(jié)和"[]"很容易去的xml的內(nèi)容;
但是在開(kāi)發(fā)中還是遇到了一點(diǎn)問(wèn)題:
當(dāng)執(zhí)行:print_r($xml->pictures);時(shí)輸出的是一個(gè) SimpleXMLElement 對(duì)象,([picture] => array([0]=>array(...)[1]=>array(...)));
再執(zhí)行:print_r($xml->pictures->picture);輸出的是n個(gè)分開(kāi)的對(duì)象。
執(zhí)行:print_r($xml->pictures->picture[0]->id);輸出的還是一個(gè)對(duì)象。這就很不理解,應(yīng)該是一個(gè)字符串。 最后網(wǎng)上說(shuō)是“迭代對(duì)象”,
應(yīng)該使用echo輸出,print_r(), var_dump()輸出不準(zhǔn)確。參考地址:http://www.dbjr.com.cn/article/25852.htm
當(dāng)然也可以修改xml的值通過(guò)這個(gè)方法。
寫(xiě)的很爛,僅供本人備忘。
今天做項(xiàng)目時(shí)遇到一個(gè)問(wèn)題:需要?jiǎng)討B(tài)更新主頁(yè)上的圖片,以示本站不是做完了就算了,是有人一直在維護(hù)。好了,需求有了,如何實(shí)現(xiàn)?!
我的想法如下:
圖片存放位置:放在一個(gè)文件夾中;圖片的類型:不能固定了,只要是圖片就可以上傳顯示;圖片名字:按原始名字有點(diǎn)不正規(guī),應(yīng)該重新命名一下。
顯示的位置:這就需要對(duì)圖片指定相應(yīng)的id,這個(gè)id是固定的,要與圖片一一對(duì)應(yīng)。于是就有一個(gè)記錄一一對(duì)應(yīng)的關(guān)系文件,可以選擇csv文件,選擇數(shù)據(jù)庫(kù)記錄,最后決定選擇xml,這個(gè)東西在學(xué)校一直沒(méi)學(xué)懂,我一直回避使用這東西,怕麻煩。今天算是挑戰(zhàn)一下,花了一下午時(shí)間,終于有所收獲。
學(xué)習(xí)步驟:
明確目標(biāo): 1、理解xml的結(jié)構(gòu);2、如何動(dòng)態(tài)建立xml文件;3、如何讀取和修改xml文件
一、 xml的結(jié)構(gòu)是樹(shù)形結(jié)構(gòu):
這個(gè)好理解。簡(jiǎn)單寫(xiě)一個(gè):
復(fù)制代碼 代碼如下:
<pictures>
<picture>
<id>1</id>
<name>pic 1</name>
</picture>
<picture>
<id>2</id>
<name>pic 2</name>
</picture>
<picture>
<id>3</id>
<name>pic 3</name>
</picture>
</pictures>
二、我使用的php創(chuàng)建:
1. 定義一個(gè)DOM對(duì)象: $dom = new DomDocument('1.0');
2. 添加子元素:$dom->appendChild($dom->createElement("pictures"))
內(nèi)存中的原型是:<pictures></pictures>
繼續(xù)往里邊加子元素:*->appendChild($dom->createElement("picture"));
繼續(xù)加: **->appendChild($dom->createElement("id"));
不加子元素了,加節(jié)點(diǎn): ***->appendChild($dom->createNode("1"))
上面的*代表上上一行的代碼;這樣一來(lái)就可以寫(xiě)成一行:
$dom->appendChild($dom->createElement("pictures"))->appendChild($dom->createElement("picture"))
->appendChild($dom->createElement("id"))->appendChild($dom->createNode("1"));
現(xiàn)在內(nèi)存中應(yīng)該是這樣的:<pictures><picture><id>1</id></picture></pictures>
顯然里要求還遠(yuǎn),很容易看懵的。
因此一般這么寫(xiě): $pictures = $dom->appendChild($dom->createElement("pictures"));
$picture = $pictures->appendChild($dom->createElement("picture"));
$id = $picture->appendChild($dom->createElement("id"));
$id->appendChild($dom->createNode("1"));
下面還可以接著創(chuàng)建name節(jié)點(diǎn):
$name = $picture->appendChild($dom->createElement("name"));
$name->appendChild($dom->createNode("pic 1"));
接下來(lái)還要接著創(chuàng)建picture節(jié)點(diǎn):
$picture = $pictures->appendChild($dom->createElement("picture"));
其實(shí)這些麻煩的事可以寫(xiě)個(gè)for循環(huán)來(lái)實(shí)現(xiàn)。
生成xml文件:
$dom->formatOutput = true;//設(shè)置格式化輸出
$dom->save("erhsh.xml");//保存xml文件
三、讀取xml文件。
1、還是定義一個(gè)DOM對(duì)象;$dom->new DomDocument();
2、加載xml文件:$dom->load("erhsh.xml");
3、按照節(jié)點(diǎn)的名字取得節(jié)點(diǎn)集合:$dom->getElementByTagName("pictures");
這種方法有點(diǎn)麻煩,參考文件:
http://www.dbjr.com.cn/article/25853.htm
不過(guò)有一種我喜歡的方法:simplexml_load_file("erhsh.xml");
此方法可以把xml文件的內(nèi)容轉(zhuǎn)換成對(duì)象的形式,使用"->"結(jié)和"[]"很容易去的xml的內(nèi)容;
但是在開(kāi)發(fā)中還是遇到了一點(diǎn)問(wèn)題:
當(dāng)執(zhí)行:print_r($xml->pictures);時(shí)輸出的是一個(gè) SimpleXMLElement 對(duì)象,([picture] => array([0]=>array(...)[1]=>array(...)));
再執(zhí)行:print_r($xml->pictures->picture);輸出的是n個(gè)分開(kāi)的對(duì)象。
執(zhí)行:print_r($xml->pictures->picture[0]->id);輸出的還是一個(gè)對(duì)象。這就很不理解,應(yīng)該是一個(gè)字符串。 最后網(wǎng)上說(shuō)是“迭代對(duì)象”,
應(yīng)該使用echo輸出,print_r(), var_dump()輸出不準(zhǔn)確。參考地址:http://www.dbjr.com.cn/article/25852.htm
當(dāng)然也可以修改xml的值通過(guò)這個(gè)方法。
寫(xiě)的很爛,僅供本人備忘。
您可能感興趣的文章:
- php之XML轉(zhuǎn)數(shù)組函數(shù)的詳解
- 基于PHP對(duì)XML的操作詳解
- php xml常用函數(shù)的集合(比較詳細(xì))
- PHP輸出XML到頁(yè)面的3種方法詳解
- 解析php DOMElement 操作xml 文檔的實(shí)現(xiàn)代碼
- php獲取本地圖片文件并生成xml文件輸出具體思路
- 自定義php類(查找/修改)xml文檔
- PHP讀取xml方法介紹
- 用PHP編寫(xiě)和讀取XML的幾種方式
- PHP中3種生成XML文件方法的速度效率比較
- PHP中的生成XML文件的4種方法分享
- php輸出xml格式字符串(用的這個(gè))
- PHP操作XML作為數(shù)據(jù)庫(kù)的類
- PHP XML操作的各種方法解析(比較詳細(xì))
- PHP操作xml代碼
- php 修改、增加xml結(jié)點(diǎn)屬性的實(shí)現(xiàn)代碼
相關(guān)文章
PHP Class&Object -- 解析PHP實(shí)現(xiàn)二叉樹(shù)
本篇文章是對(duì)PHP中二叉樹(shù)的實(shí)現(xiàn)代碼進(jìn)行詳細(xì)的分析介紹,需要的朋友參考下2013-06-06解決Laravel5.x的php artisan migrate數(shù)據(jù)庫(kù)遷移創(chuàng)建操作報(bào)錯(cuò)SQLSTATE[42000]
這篇文章主要介紹了解決Laravel5.x的php artisan migrate數(shù)據(jù)庫(kù)遷移創(chuàng)建操作報(bào)錯(cuò)SQLSTATE[42000],需要的朋友可以參考下2020-04-04PHP+Apache實(shí)現(xiàn)二級(jí)域名之間共享cookie的方法
這篇文章主要介紹了PHP+Apache實(shí)現(xiàn)二級(jí)域名之間共享cookie的方法,涉及Apache的配置、hosts修改及php cookie操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-07-07Yii PHP Framework實(shí)用入門教程(詳細(xì)介紹)
本篇文章是對(duì)Yii PHP Framework實(shí)用入門教程進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP中使用gettext來(lái)支持多語(yǔ)言的方法
開(kāi)發(fā)多語(yǔ)言的Web應(yīng)用是一件非常困難的事,各個(gè)國(guó)家的字符集的編碼方式、貨幣符號(hào)、日期格式、數(shù)字格式、文字表現(xiàn)都各不相同.2011-05-05php實(shí)現(xiàn)的redis緩存類定義與使用方法示例
這篇文章主要介紹了php實(shí)現(xiàn)的redis緩存類,結(jié)合具體實(shí)例形式分析了php封裝的針對(duì)redis緩存類定義與使用相關(guān)操作技巧,需要的朋友可以參考下2017-08-08