接著上次的xml筆記01 ,記錄一下如何DOM創(chuàng)建xml
一、由于沒有特意來寫博客,都是在程序中用注釋的方法記錄筆記,整理過來難免格式錯誤,排版什么的,大家好事看不懂就仔細看給出的代碼加上注釋,一定會看明白的,代碼中用到的方法,php手冊都有。不知道的可以查手冊,這里說說我查手冊時的一個總結(jié):
1.DOMNode 類 ,這是一個dom的根類,里面定義了一下屬性和方法。比如:$nodeName屬性appendChild方法 等等
2、DOMDocument 類,這是一個文檔類,它繼承domNode類,里面有自己的屬性和方法
3、DOMElement 類,是一個元素類,也是繼承domNode類,當然也有自己的屬性和方法
4、DOMAttr 類 一個屬性類,和上面一樣
5、DOMCdataSection類,一個CDATA類,同上
6、DOMText 類,一個文本類,同上
如何創(chuàng)建和使用對應的類?
看上篇博客有這幾個對象:
DOMdocument object --> DOMDocument 類
DOMElement Object --> DOMElement 類
DOMText Object --> DOMText 類
DOMNodeList Object 這個是節(jié)點列表對象是 對應DOMNodeList 類
二、現(xiàn)在給出代碼,就把注釋當做博文吧。
1 <?php 2 /** 3 * 4 * @authors wxb (http://www.cnblogs.com/wxb0328/) 5 * @date 2014-09-30 22:36:02 6 * @version $Id$ 7 */ 8 /* 9 34、DOM創(chuàng)建XML 10 1、再次強調(diào):在xml里,一切皆是節(jié)點,包括換行符和空白,都是文本節(jié)點(xml是純文本的,所以這些自然也是節(jié)點),下面說的屬性也是一個節(jié)點,叫做屬性節(jié)點 11 2、如何生成下面這樣的xml文件? 12 <?xml version='1.0' encoding='utf-8' ?> 13 <bookstore> 14 <book id="b001"> 15 <title>路遙-平凡的世界</title> 16 <intro><![CDATA[這是一部經(jīng)典書籍&老少皆宜]]></intro> 17 </book> 18 </bookstore> 19 DOM怎么創(chuàng)建? 20 方法一:從里往外 21 1、創(chuàng)建 路遙-平凡的世界 文本節(jié)點 22 2、創(chuàng)建普通的title節(jié)點 23 3、把 路遙-平凡的世界 文本節(jié)點,加入到title節(jié)點中 24 4、創(chuàng)建CDATA節(jié)點 25 5、創(chuàng)建intro節(jié)點 26 6、把CDATA節(jié)點放到intro節(jié)點中 27 7、創(chuàng)建book節(jié)點 28 8、把title和intro節(jié)點放到book節(jié)點中 29 9、創(chuàng)建id屬性節(jié)點 30 10、把屬性節(jié)點放到book節(jié)點中 31 11、再創(chuàng)建bookstore節(jié)點 32 12、把book節(jié)點放到bookstore節(jié)點中 33 13、把bookstore節(jié)點放到文檔中 34 方法二:從外往里 35 36 在上面的步驟中我們提取出下面幾種操作: 37 1、如何創(chuàng)建文本節(jié)點 38 2、如何創(chuàng)建普通節(jié)點 39 3、如何創(chuàng)建CDATA節(jié)點 40 4、如何創(chuàng)建屬性節(jié)點 41 5、如何增加子節(jié)點 42 下面開始完成這個xml的創(chuàng)建,操作中的方法的具體用法和說明查php手冊 43 */ 44 // 創(chuàng)建DOM文檔對象 45 $dom = new DOMDocument('1.0','utf-8'); 46 47 // 1、創(chuàng)建文本節(jié)點, 48 // 調(diào)用createTextNode()方法 49 $text = $dom->createTextNode('路遙-平凡的世界'); 50 // 2、創(chuàng)建title元素 51 $title = $dom->createElement('title'); 52 53 // 3、把 路遙-平凡的世界 文本節(jié)點,加入到title節(jié)點中 54 $title->appendChild($text); 55 // 4、創(chuàng)建CDATA節(jié)點 56 $cdata = $dom->createCDATASection('這是一部經(jīng)典書籍&老少皆宜'); 57 // 5、創(chuàng)建intro節(jié)點 58 $intro = $dom->createElement('intro'); 59 // 6、把CDATA節(jié)點放到intro節(jié)點中 60 $intro->appendChild($cdata); 61 // 7、創(chuàng)建book節(jié)點 62 $book = $dom->createElement('book'); 63 // 8、把title和intro節(jié)點放到book節(jié)點中 64 $book->appendChild($title); 65 $book->appendChild($intro); 66 // 9、創(chuàng)建id屬性節(jié)點 67 $id = $dom->createAttribute('id'); 68 $id->html' target='_blank'>value = 'b001'; 69 // 10、把屬性節(jié)點放到book節(jié)點中 70 $book->appendChild($id); 71 // 11、再創(chuàng)建bookstore節(jié)點 72 $bookstore = $dom->createElement('bookstore'); 73 // 12、把book節(jié)點放到bookstore節(jié)點中 74 $bookstore->appendChild($book); 75 // 13、把bookstore節(jié)點放到文檔中 76 $dom->appendChild($bookstore); 77 78 // 輸出看看 79 /* 80 * 81 * 為什么這個方法可以輸出,看名字不想啊,查看手冊我們可以看到 82 * string DOMDocument::saveXML ([ DOMNode $node [, int $options ]] ) 83 * Returns the XML, or FALSE if an error occurred. 84 * 這個方法,參數(shù)可以缺省,返回是一個xml,也就是字符串吧,定義不是:string嗎 85 */ 86 //echo $dom->saveXML(); 87 /* 88 * 我們看到結(jié)果如圖1,頁面上什么也沒有,但是請注意頭部那個標簽,我們再右鍵看源碼。如圖2 89 * 明白了,之所以沒有在頁面上看到是因為瀏覽器解析了我們的這個xml 90 * 那么怎么避免瀏覽器解析? 91 * 給瀏覽器發(fā)生一個頭部信息,告訴瀏覽器給的是xml 不要解析 92 * header("content-type:text/xml"); 93 * 94 */ 95 //現(xiàn)在我們先注釋掉上面的輸出,用下面的輸出 96 //header("content-type:text/xml"); 97 //echo $dom->saveXML(); 98 // 結(jié)果如圖3 99 100 /* 現(xiàn)在我們試著將上面生成的xml 保存成一個文件101 * 使用save()方法102 * int DOMDocument::save ( string $filename [, int $options ] )103 * filename The path to the saved XML document104 105 */106 echo $dom->save('34.xml') ? "ok" : "no";107 // 成功生成xml文件,如圖4108 109 /*110 * 同時,我們發(fā)現(xiàn),生成的這個xml文檔,沒有任何格式,沒有空格、沒有換行、一行就完成了。111 * 這恰恰驗證了 上面說的 在xml中一切皆是節(jié)點112 */113 114 ?>圖片:
圖一

圖二

圖三:


圖四:

好了,就這么多吧,睡覺了。如果有什么錯誤,歡迎大家批評指正啊。晚安,博客園
PHP編程鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答