国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發 > XML > 正文

xml基礎學習筆記04

2020-03-22 18:23:11
字體:
來源:轉載
供稿:網友
  •   今天繼續xml學習,主要是:SimpleXML快速解析文檔、xml與數組相互轉換 。博客中只是簡單的做一個學習記錄、積累。更加詳細的使用方法,可以查看php手冊

      1、SimpleXML快速解析文檔

        前面的三篇博客中提到的主要是DOM解析XML文檔,我們在使用的過程中可以明顯的感覺到DOM解析雖然很強大,但是步驟繁瑣。下面我們說一種相對簡單的XML解析,

        SimpleXML解析xml文件非常簡單,因為它一次性把xml文件解析成一個對象

        還是和以前一樣,程序中的代碼注釋進行了詳細的說明

        

     1 <?php 2 /** 3  * 37集、用SimpleXML快速解析文檔 4  * 知識點:1、SimpleXML 5  *           2、Xpath 6  * SimpleXML解析xml文件非常簡單,因為它一次性把xml文件解析成一個對象  7  */ 8 // simplexml_load_file() 從文件載入xml文檔 9 $simxml = simplexml_load_file('./37.xml');10 // 輸出這個對象,我們看到如圖1 所示的一個 SimpleXMLElement Object,11 // 可以看出SimpleXML將xml文件解析成了一個包含對象和數組的混合12 //print_r($simxml);13 14 // 找到 title 是 路遙-平凡的世界 并輸出15 echo $simxml->book[1]->title;16 echo '<br />';17 // 看看bookstore下有幾本書,可是使用simplexml下面的count()方法18 echo $simxml->count();19 // 如圖2 我們看到正確的得到了我們期望的結果20 echo '<br />';21 // 查看每本書中用幾個子元素22 23 $sons = $simxml->children();24 foreach ($sons as $key => $html' target='_blank'>value) {25     echo '分別有'.$value->count().'個子元素:'.$value->getName().'<br />';26 }27 28 ?>

    輸出截圖

      2、38集、xml與數組相互轉換

      

      1 <?php  2 /**  3  *   4  * @authors wxb (http://www.cnblogs.com/wxb0328/)  5  * @date    2014-10-06 23:00:19  6  *   7  * 38集、xml與數組相互轉換  8  *   9  */ 10  11 $simxml = simplexml_load_file('./38.xml'); 12  13 //print_r($simxml); 14 /** 15  * 上面的是37集中開頭SimpleXML解析開頭說過的,我們可以看到SimpleXML的解析,一個SimpleXMLElement Object, 16  * 對象中既有對象又有數組。比較混亂,一會使用->,一會又使用[],不利于我們運用,現在將其轉換為數組 17  */ 18 /** 19  * 現在我們考慮怎樣轉換? 20  * 我們可以看到: 21  *        對象,用 屬性名->屬性值        存儲變量 22  *              用 對象名->屬性名 調用變量值 23  *        數組,用 鍵名 => 鍵值        存儲變量 24  *              用 數組[鍵名]        調用變量值 25  *        我們完全可以將一個對象看成 一個關聯數組 26  * 有了上面的理解,我們這個xml轉數組就有了思路 27  * 1、我們先使用array 強制轉換對象為數組,但是強制轉換無法只能的將你的對象中的對象再轉為數組,它只能夠轉換當前給定的數組 28  * 2、基于1的分析,我們考慮寫一個方法,這個方法就是將對象強制轉換為數組 29  * 3、在這個方法中我們使用is_array() 判斷 如果是數組就不用轉換,如果不是數組就轉換 30  * 4、然后我們遞歸的調用這個方法 31  * 好了,思路有了!現在開始做 32  */ 33  function XmlToArr($simpleXml) { 34      /* 35      這里是十八哥在視屏中的實例,如圖3  36      $arr = (array) $simpleXml; 37     foreach ($arr as $key => $value) { 38         if($value instanceof SimpleXMLElement || is_array($value)){ 39             $arr[$key] = XmlToArr($value); 40         } 41     } 42     */ 43     /* 44     * 在十八個的實例中我發現,我發現我們要判斷并且轉換的不光是xml的對象,在數組的情況下也需要查看數組是否是二維的, 45     * 如果是二維數組我們也需要繼續遞歸調用方法,轉換。 46     * 看到這里,我們上面的的思路3就是有錯誤的,我們不能只是簡單的判斷是數組就不轉化了,但是,我們可以這樣做,當這個 47     * 數組是一維數組的時候,就不需要轉化了,但是怎樣判斷這個數組是一維數組? 48     * 雖然這里是可以用程序判斷的,但是要自己寫,php并沒有提供特定的函數方法。 49     * 但是我們可以發現,當時一維數組時,數組能的值都是標量: 50     * 標量變量是指那些包含了 integer、float、string 或 boolean的變量,而 array、object 和 resource 則不是標量。  51     * 基于這個思路,修改函數如下: 52     * 判斷如果是一個標量,此時我們已經到了一個數組的值的部分,那我們返回這個值給遞歸調用里面的$arr[$key]($arr[$key] = XmlToArr($value);) 53      */ 54      if(is_scalar($simpleXml)) { 55          return $simpleXml; 56      }else { 57          //如果不是標量,那此時這個$simpleXml 肯定是array、object 和 resource 其中一個,但是在xml中不可能是resource了 58          // 無論你是array還是object,統統強制轉化 59          $arr = (array) $simpleXml; 60          // 循環這個數組,然后遞歸調用這個海曙 61         foreach ($arr as $key => $value) { 62         $arr[$key] = XmlToArr($value); 63         } 64      } 65      66     return $arr; 67 } 68 // 輸出到頁面,我們可以看到如圖4,結果是完全一樣的 69 print_r(XmlToArr($simxml)); 70  71 /***************************************************** 72     現在我們再將數組轉化為xml 73 *****************************************************/ 74 // 首先我們定義這個數組 75  76                      77 $xmlArr = Array( 78     'title' => '路遙-平凡的世界', 79     'price' => 43, 80     'comment' => array( 81             0 => 'good book', 82             1 => 'very help', 83             2 => 'I think the book is best' 84         ) 85 ); 86 // 數組轉化為xml 方法 87 function arrToxml($arr,$node = null) { 88     if ($node === null) { 89         $sx = new SimpleXMLElement("<?xml version='1.0' encoding='utf-8' ?><bookstore></bookstore>"); 90     }else{ 91         $sx = $node; 92     } 93      94     foreach ($arr as $key => $value) { 95         if (is_scalar($value)) { 96             /* 97             $sx->addChild($key,$value); 98             上面這種輸出雖然也成功的看到了,但是xml抱錯了(如圖5),原因是xml的標簽,節點不能以數字開頭 99             下面我們簡單的做個判斷,然后是數字的我們給拼接一個字母前綴100             成功輸出(如圖6)101             */102 103             if(is_numeric($key)) {104                 $sx->addChild('comm_'.$key,$value);105             }else{106                 $sx->addChild($key,$value);107             }108             109         }else {110             $tmpNode = $sx->addChild($key);111             arrToxml($value,$tmpNode);112         }113     }114     return $sx->saveXML();115 }116 header("content-type:text/xml");117 echo arrToxml($xmlArr);118 /******************************************119     如果要運行上面的程序,請將兩部分分開運行(可以先注釋掉其中的某個部分)120 ******************************************/121 ?>

    圖3

    圖4

    圖5

    圖6

      好了,這篇就先這么多吧,代碼中的注釋很關鍵,由于沒有將每一次運行的代碼都寫入到新的文件,都是先編寫一部分,完成以后,再注釋掉,所以大家在看的時候,一定

    要仔細看代碼的注釋,

      也不是我這人太爛,只是相同的說明,沒有必要在寫博客的時候再提出來,既然都是干這個的,我相信大家都是有看注釋的習慣的。而我就在寫代碼的時候把注釋盡量寫的

    詳細點,這樣,寫博客時我也能節省點時間,畢竟周末時間是寶貴的呀!

      雖然只是一點學習筆記,但是我覺得總是可以幫助到一些人,而且把東西分享出來,給別人開的東西也不能太差。就是這樣的想法,我在學習的時候可能會更加用心。需要

    學習的東西還有很多,沒有辦法做更多的深入的研究。這些筆記就算是xml的入門吧,以后工作中再去了解更多的xml的東西。

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 上一篇:xml基礎學習筆記02

    下一篇:DOM解析XML

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
    av麻豆国产| www在线播放| 午夜在线小视频| 国产免费a∨片在线观看不卡| 久久久久久久美女| 国产在线高清理伦片a| 高清在线观看av| 国产激情二区| 在线国产网址| 日本在线视频www鲁啊鲁| 久热av在线| 中文字幕视频在线免费| 国产黄a三级三级三级av在线看 | 午夜免费视频在线国产| 国产成在线观看免费视频| 亚洲一区二区三区在线观看网站| 国产美女在线观看| 尤物视频在线观看视频| 国产乱在线观看视频| 国产超碰在线观看| 天天av天天爽| 伊人影院蕉久影院在线播放| 懂色av一区| 天天插天天狠天天透| 国产激情三区| 国产精品入口免费麻豆| 黄色一级片视频| 亚洲精品一线| 国产黄大片在线观看画质优化| 成年网站免费入口在线观看| 中文产幕区在线观看| 中文字幕高清av| 九九在线免费视频| heisi视频网在线观看| 精品网站www| 国产爆初菊在线观看免费视频网站| 在线视频色在线| 国产污视频在线| 午夜视频99| 国产美女免费观看| 久蕉依人在线视频| eeuss影院www在线观看| 樱花草在线观看www| 99综合精品久久| 亚洲an天堂an在线观看| 色悠久久久久综合网小说| 伊人免费在线| gogo在线高清视频| 免费看的毛片| 高清视频一区二区三区四区| 中文字幕在线第一页| 天天av天天爱| 91xxx在线观看| 国产精品久久久久久久久鸭| 国产精品国精产品一二| 精品176二区| 老鸭窝av在线| 国产亚洲精品午夜高清影院| 91麻豆免费在线视频| 亚洲欧美日韩一区成人| 青青青青在线| 国产一二三视频| 国产福利av网站| 天天干天天摸| 中文字幕色视频| 影音先锋日韩| 国产免费人人看| 国产激情在线视频| 久草在线视频网| 国产精品xxx电影| 欧美性猛交xxxx免费看久久| 国产美女在线观看| 99中文字幕一区| 最近中文字幕在线中文视频| 精品a在线观看| 综合图区亚洲白拍在线 | 国产激情99| 国产在线更新| www免费在线观看视频| 国产精品麻豆一区二区三区 | 欧美一级久久久久久久久大| 最新超碰在线| www中文字幕在线观看| 国产精品欧美韩国日本久久| 免费精品国产自产拍观看| 国产导航在线| 国产超碰在线观看| 国产一二区在线观看| 国产永久在线观看| 欧美人成在线观看网站高清| 99精品老司机免费视频| 国产一区二区三区不卡在线| 免费网站看黄yyy222| 在线āv视频| 永久免费在线观看| 中文字幕av在线播放| 国产国产人免费人成免费视频| 国产精选一区二区三区不卡催乳| 亚洲第一区视频| 在线视频观看你懂的| 伊人222成人综合网| 一级黄色av| 免费一区二区在线观看| 欧美日韩性视频一区二区三区| av免费在线观看网站| a级片国产精品自在拍在线播放| 精品成人免费自拍视频| 在线观看av网站永久| 亚洲大香人伊一本线| 青青草原国产在线| 91超碰免费在线| 精品成人免费自拍视频| 亚洲视频精品在线观看| 欧美黑人乱大交| 国产一级视频| 四虎a级欧美在线观看| 欧美性猛交p30| 资源视频在线播放免费| 国产第一页在线| 色综合久久五月天| 国产毛片在线看| 国产午夜精品久久久久免费视| 国产激情三区| 青青青青在线| 国产精品久久久久久久久鸭| 亚洲男人网站| 国产毛片毛片毛片| 国产va在线| 国产男女无套在线播放| 99久热re在线精彩视频| 国产麻豆精品入口在线观看| 国产黄a三级三级三级av在线看| 青青青国产视频| 国产xxxx做受性欧美88| 国产美女福利在线| 青青草免费在线视频| 2021av在线| 国内外激情在线| 在线中文资源天堂| 最近最好的中文字幕2019免费 | 国产黄网站在线观看| 超碰在线影院| 中文一区在线观看| 国产高清视频免费最新在线| 超碰免费在线播放| 免费看av大片| 日本高清中文字幕在线| 2020国产在线视频| 国产视频三级在线观看播放| 美女永久在线网站| 欧美色第一页| 热99re久久精品这里都是免费| av在线free| av福利在线| av在线免费观看网| a视频在线看| 欧美亚洲天堂| 国产在线激情视频| 美女国产在线| 99热在线免费播放| 国产精品自拍在线观看| 成人福利视频导航| 欧美日韩综合高清一区二区| av手机天堂| 久草在线资源福利| 国产在线更新| 国产黄在线播放| 在线国产1区| 久草视频国产| 国产日本在线视频| 精品全国在线一区二区| 国产无遮挡又黄又爽免费软件 | 国产中文字幕在线| 久久99国产视频| 99热在线免费观看| 91xx在线观看| 成年女人在线视频| 国产精品乱码一区二区三区视频 | а√天堂www在线а√天堂视频| 波多野结衣久久高清免费| 国产免费视频| 91九色在线看| 在线观看中文字幕的网站| gogo在线高清视频| 国产亚洲精品久久久久久移动网络| 69国产精品视频| 狠狠干天天干| 在线午夜影院| 2018av男人天堂| 四虎免费视频| 国产极品嫩模在线视频一区| 在线看黄网址| 国产一级性片| 超碰免费在线观看| 在线免费观看污| 国产人成在线观看| www.蜜桃av| 国产黄色片中文字幕| 国产麻豆免费| 热99re久久精品精品免费|