一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - php xml 入門學(xué)習(xí)資料

php xml 入門學(xué)習(xí)資料

2019-11-14 14:56PHP教程網(wǎng) PHP教程

今天做項(xiàng)目時遇到一個問題:需要動態(tài)更新主頁上的圖片,以示本站不是做完了就算了,是有人一直在維護(hù)。好了,需求有了,如何實(shí)現(xiàn)?!

起因: 
  今天做項(xiàng)目時遇到一個問題:需要動態(tài)更新主頁上的圖片,以示本站不是做完了就算了,是有人一直在維護(hù)。好了,需求有了,如何實(shí)現(xiàn)?! 
  我的想法如下: 
  圖片存放位置:放在一個文件夾中;圖片的類型:不能固定了,只要是圖片就可以上傳顯示;圖片名字:按原始名字有點(diǎn)不正規(guī),應(yīng)該重新命名一下。 
  顯示的位置:這就需要對圖片指定相應(yīng)的id,這個id是固定的,要與圖片一一對應(yīng)。于是就有一個記錄一一對應(yīng)的關(guān)系文件,可以選擇csv文件,選擇數(shù)據(jù)庫記錄,最后決定選擇xml,這個東西在學(xué)校一直沒學(xué)懂,我一直回避使用這東西,怕麻煩。今天算是挑戰(zhàn)一下,花了一下午時間,終于有所收獲。 
學(xué)習(xí)步驟: 
  明確目標(biāo): 1、理解xml的結(jié)構(gòu);2、如何動態(tài)建立xml文件;3、如何讀取和修改xml文件 
  一、 xml的結(jié)構(gòu)是樹形結(jié)構(gòu): 
這個好理解。簡單寫一個: 

復(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. 定義一個DOM對象: $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")) 
     上面的*代表上上一行的代碼;這樣一來就可以寫成一行: 
       $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),很容易看懵的。 
      因此一般這么寫: $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")); 
      接下來還要接著創(chuàng)建picture節(jié)點(diǎn): 
              $picture = $pictures->appendChild($dom->createElement("picture")); 
      其實(shí)這些麻煩的事可以寫個for循環(huán)來實(shí)現(xiàn)。 
      生成xml文件: 
              $dom->formatOutput = true;//設(shè)置格式化輸出 
              $dom->save("erhsh.xml");//保存xml文件 
  三、讀取xml文件。 
      1、還是定義一個DOM對象;$dom->new DomDocument(); 
      2、加載xml文件:$dom->load("erhsh.xml"); 
      3、按照節(jié)點(diǎn)的名字取得節(jié)點(diǎn)集合:$dom->getElementByTagName("pictures"); 
      這種方法有點(diǎn)麻煩

    不過有一種我喜歡的方法:simplexml_load_file("erhsh.xml"); 
     此方法可以把xml文件的內(nèi)容轉(zhuǎn)換成對象的形式,使用"->"結(jié)和"[]"很容易去的xml的內(nèi)容; 
    但是在開發(fā)中還是遇到了一點(diǎn)問題: 
    當(dāng)執(zhí)行:print_r($xml->pictures);時輸出的是一個 SimpleXMLElement 對象,([picture] => array([0]=>array(...)[1]=>array(...))); 
    再執(zhí)行:print_r($xml->pictures->picture);輸出的是n個分開的對象。 
    執(zhí)行:print_r($xml->pictures->picture[0]->id);輸出的還是一個對象。這就很不理解,應(yīng)該是一個字符串。 最后網(wǎng)上說是“迭代對象”, 
    應(yīng)該使用echo輸出,print_r(), var_dump()輸出不準(zhǔn)確。
    當(dāng)然也可以修改xml的值通過這個方法。 
寫的很爛,僅供本人備忘。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天狠天天天天透在线 | 日本中文字幕一区二区有码在线 | 好大好爽好硬我要喷水了 | 亚洲嫩模吧粉嫩粉嫩冒白浆 | 精品一区二区三区免费观看 | 国产1广场舞丰满老女偷 | 免费国产高清精品一区在线 | 国士李风起全文在线阅读 | 午夜亚洲国产 | 京东热在线观看 | 无人区乱码区1卡2卡三卡在线 | 天天干天天日天天射天天操毛片 | 99国产热 | 免费在线观看伦理片 | 欧美一卡2卡3卡四卡海外精品 | 蜜桃影像传媒推广 | 午夜福利体检 | 女同志 videos | 丫鬟粗大狠狠贯穿h | 草草视频在线观看最新 | 日韩一级片在线免费观看 | www.一级片.com| 趴好撅高打屁股sp调教h | 91麻豆精品国产91久久久 | 欧美一级在线播放 | 国产经典一区 | 国产伦码精品一区二区 | 色综合久久中文字幕网 | gayrb漫画免费入口 | 男人操美女逼视频 | 亚洲国产在线播放 | 俺去俺来也www色官网免费的 | 明星乱淫 | 美女班主任下面好爽好湿好紧 | 干露露视频 性感写真 | 久久精品男人影院 | 国产情侣视频观看 | 男女发生性关系视频 | 国产性片在线观看 | 欧美成人aa久久狼窝动画 | 国产欧美日韩视频在线观看一区二区 |