接著上次的xml筆記01 ,記錄一下如何DOM創建xml
一、由于沒有特意來寫博客,都是在程序中用注釋的方法記錄筆記,整理過來難免格式錯誤,排版什么的,大家好事看不懂就仔細看給出的代碼加上注釋,一定會看明白的,代碼中用到的方法,php手冊都有。不知道的可以查手冊,這里說說我查手冊時的一個總結:
1.DOMNode 類 ,這是一個dom的根類,里面定義了一下屬性和方法。比如:$nodeName屬性appendChild方法 等等
2、DOMDocument 類,這是一個文檔類,它繼承domNode類,里面有自己的屬性和方法
3、DOMElement 類,是一個元素類,也是繼承domNode類,當然也有自己的屬性和方法
4、DOMAttr 類 一個屬性類,和上面一樣
5、DOMCdataSection類,一個CDATA類,同上
6、DOMText 類,一個文本類,同上
如何創建和使用對應的類?
看上篇博客有這幾個對象:
DOMdocument object --> DOMDocument 類
DOMElement Object --> DOMElement 類
DOMText Object --> DOMText 類
DOMNodeList Object 這個是節點列表對象是 對應DOMNodeList 類
二、現在給出代碼,就把注釋當做博文吧。
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創建XML 10 1、再次強調:在xml里,一切皆是節點,包括換行符和空白,都是文本節點(xml是純文本的,所以這些自然也是節點),下面說的屬性也是一個節點,叫做屬性節點 11 2、如何生成下面這樣的xml文件? 12 <?xml version='1.0' encoding='utf-8' ?> 13 <bookstore> 14 <book id="b001"> 15 <title>路遙-平凡的世界</title> 16 <intro><![CDATA[這是一部經典書籍&老少皆宜]]></intro> 17 </book> 18 </bookstore> 19 DOM怎么創建? 20 方法一:從里往外 21 1、創建 路遙-平凡的世界 文本節點 22 2、創建普通的title節點 23 3、把 路遙-平凡的世界 文本節點,加入到title節點中 24 4、創建CDATA節點 25 5、創建intro節點 26 6、把CDATA節點放到intro節點中 27 7、創建book節點 28 8、把title和intro節點放到book節點中 29 9、創建id屬性節點 30 10、把屬性節點放到book節點中 31 11、再創建bookstore節點 32 12、把book節點放到bookstore節點中 33 13、把bookstore節點放到文檔中 34 方法二:從外往里 35 36 在上面的步驟中我們提取出下面幾種操作: 37 1、如何創建文本節點 38 2、如何創建普通節點 39 3、如何創建CDATA節點 40 4、如何創建屬性節點 41 5、如何增加子節點 42 下面開始完成這個xml的創建,操作中的方法的具體用法和說明查php手冊 43 */ 44 // 創建DOM文檔對象 45 $dom = new DOMDocument('1.0','utf-8'); 46 47 // 1、創建文本節點, 48 // 調用createTextNode()方法 49 $text = $dom->createTextNode('路遙-平凡的世界'); 50 // 2、創建title元素 51 $title = $dom->createElement('title'); 52 53 // 3、把 路遙-平凡的世界 文本節點,加入到title節點中 54 $title->appendChild($text); 55 // 4、創建CDATA節點 56 $cdata = $dom->createCDATASection('這是一部經典書籍&老少皆宜'); 57 // 5、創建intro節點 58 $intro = $dom->createElement('intro'); 59 // 6、把CDATA節點放到intro節點中 60 $intro->appendChild($cdata); 61 // 7、創建book節點 62 $book = $dom->createElement('book'); 63 // 8、把title和intro節點放到book節點中 64 $book->appendChild($title); 65 $book->appendChild($intro); 66 // 9、創建id屬性節點 67 $id = $dom->createAttribute('id'); 68 $id->html' target='_blank'>value = 'b001'; 69 // 10、把屬性節點放到book節點中 70 $book->appendChild($id); 71 // 11、再創建bookstore節點 72 $bookstore = $dom->createElement('bookstore'); 73 // 12、把book節點放到bookstore節點中 74 $bookstore->appendChild($book); 75 // 13、把bookstore節點放到文檔中 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 * 這個方法,參數可以缺省,返回是一個xml,也就是字符串吧,定義不是:string嗎 85 */ 86 //echo $dom->saveXML(); 87 /* 88 * 我們看到結果如圖1,頁面上什么也沒有,但是請注意頭部那個標簽,我們再右鍵看源碼。如圖2 89 * 明白了,之所以沒有在頁面上看到是因為瀏覽器解析了我們的這個xml 90 * 那么怎么避免瀏覽器解析? 91 * 給瀏覽器發生一個頭部信息,告訴瀏覽器給的是xml 不要解析 92 * header("content-type:text/xml"); 93 * 94 */ 95 //現在我們先注釋掉上面的輸出,用下面的輸出 96 //header("content-type:text/xml"); 97 //echo $dom->saveXML(); 98 // 結果如圖3 99 100 /* 現在我們試著將上面生成的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 * 同時,我們發現,生成的這個xml文檔,沒有任何格式,沒有空格、沒有換行、一行就完成了。111 * 這恰恰驗證了 上面說的 在xml中一切皆是節點112 */113 114 ?>
圖片:
圖一
圖二
圖三:
圖四:
好了,就這么多吧,睡覺了。如果有什么錯誤,歡迎大家批評指正啊。晚安,博客園
PHP編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答