接著上次的xml筆記01 ,記錄一下如何DOM創(chuàng)建xml
一、由于沒(méi)有特意來(lái)寫(xiě)博客,都是在程序中用注釋的方法記錄筆記,整理過(guò)來(lái)難免格式錯(cuò)誤,排版什么的,大家好事看不懂就仔細(xì)看給出的代碼加上注釋?zhuān)欢〞?huì)看明白的,代碼中用到的方法,php手冊(cè)都有。不知道的可以查手冊(cè),這里說(shuō)說(shuō)我查手冊(cè)時(shí)的一個(gè)總結(jié):
1.DOMNode 類(lèi) ,這是一個(gè)dom的根類(lèi),里面定義了一下屬性和方法。比如:$nodeName屬性appendChild方法 等等
2、DOMDocument 類(lèi),這是一個(gè)文檔類(lèi),它繼承domNode類(lèi),里面有自己的屬性和方法
3、DOMElement 類(lèi),是一個(gè)元素類(lèi),也是繼承domNode類(lèi),當(dāng)然也有自己的屬性和方法
4、DOMAttr 類(lèi) 一個(gè)屬性類(lèi),和上面一樣
5、DOMCdataSection類(lèi),一個(gè)CDATA類(lèi),同上
6、DOMText 類(lèi),一個(gè)文本類(lèi),同上
如何創(chuàng)建和使用對(duì)應(yīng)的類(lèi)?
看上篇博客有這幾個(gè)對(duì)象:
DOMdocument object --> DOMDocument 類(lèi)
DOMElement Object --> DOMElement 類(lèi)
DOMText Object --> DOMText 類(lèi)
DOMNodeList Object 這個(gè)是節(jié)點(diǎn)列表對(duì)象是 對(duì)應(yīng)DOMNodeList 類(lèi)
二、現(xiàn)在給出代碼,就把注釋當(dāng)做博文吧。
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、再次強(qiáng)調(diào):在xml里,一切皆是節(jié)點(diǎn),包括換行符和空白,都是文本節(jié)點(diǎn)(xml是純文本的,所以這些自然也是節(jié)點(diǎn)),下面說(shuō)的屬性也是一個(gè)節(jié)點(diǎn),叫做屬性節(jié)點(diǎn) 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)典書(shū)籍&老少皆宜]]></intro> 17 </book> 18 </bookstore> 19 DOM怎么創(chuàng)建? 20 方法一:從里往外 21 1、創(chuàng)建 路遙-平凡的世界 文本節(jié)點(diǎn) 22 2、創(chuàng)建普通的title節(jié)點(diǎn) 23 3、把 路遙-平凡的世界 文本節(jié)點(diǎn),加入到title節(jié)點(diǎn)中 24 4、創(chuàng)建CDATA節(jié)點(diǎn) 25 5、創(chuàng)建intro節(jié)點(diǎn) 26 6、把CDATA節(jié)點(diǎn)放到intro節(jié)點(diǎn)中 27 7、創(chuàng)建book節(jié)點(diǎn) 28 8、把title和intro節(jié)點(diǎn)放到book節(jié)點(diǎn)中 29 9、創(chuàng)建id屬性節(jié)點(diǎn) 30 10、把屬性節(jié)點(diǎn)放到book節(jié)點(diǎn)中 31 11、再創(chuàng)建bookstore節(jié)點(diǎn) 32 12、把book節(jié)點(diǎn)放到bookstore節(jié)點(diǎn)中 33 13、把bookstore節(jié)點(diǎn)放到文檔中 34 方法二:從外往里 35 36 在上面的步驟中我們提取出下面幾種操作: 37 1、如何創(chuàng)建文本節(jié)點(diǎn) 38 2、如何創(chuàng)建普通節(jié)點(diǎn) 39 3、如何創(chuàng)建CDATA節(jié)點(diǎn) 40 4、如何創(chuàng)建屬性節(jié)點(diǎn) 41 5、如何增加子節(jié)點(diǎn) 42 下面開(kāi)始完成這個(gè)xml的創(chuàng)建,操作中的方法的具體用法和說(shuō)明查php手冊(cè) 43 */ 44 // 創(chuàng)建DOM文檔對(duì)象 45 $dom = new DOMDocument('1.0','utf-8'); 46 47 // 1、創(chuàng)建文本節(jié)點(diǎn), 48 // 調(diào)用createTextNode()方法 49 $text = $dom->createTextNode('路遙-平凡的世界'); 50 // 2、創(chuàng)建title元素 51 $title = $dom->createElement('title'); 52 53 // 3、把 路遙-平凡的世界 文本節(jié)點(diǎn),加入到title節(jié)點(diǎn)中 54 $title->appendChild($text); 55 // 4、創(chuàng)建CDATA節(jié)點(diǎn) 56 $cdata = $dom->createCDATASection('這是一部經(jīng)典書(shū)籍&老少皆宜'); 57 // 5、創(chuàng)建intro節(jié)點(diǎn) 58 $intro = $dom->createElement('intro'); 59 // 6、把CDATA節(jié)點(diǎn)放到intro節(jié)點(diǎn)中 60 $intro->appendChild($cdata); 61 // 7、創(chuàng)建book節(jié)點(diǎn) 62 $book = $dom->createElement('book'); 63 // 8、把title和intro節(jié)點(diǎn)放到book節(jié)點(diǎn)中 64 $book->appendChild($title); 65 $book->appendChild($intro); 66 // 9、創(chuàng)建id屬性節(jié)點(diǎn) 67 $id = $dom->createAttribute('id'); 68 $id->html' target='_blank'>value = 'b001'; 69 // 10、把屬性節(jié)點(diǎn)放到book節(jié)點(diǎn)中 70 $book->appendChild($id); 71 // 11、再創(chuàng)建bookstore節(jié)點(diǎn) 72 $bookstore = $dom->createElement('bookstore'); 73 // 12、把book節(jié)點(diǎn)放到bookstore節(jié)點(diǎn)中 74 $bookstore->appendChild($book); 75 // 13、把bookstore節(jié)點(diǎn)放到文檔中 76 $dom->appendChild($bookstore); 77 78 // 輸出看看 79 /* 80 * 81 * 為什么這個(gè)方法可以輸出,看名字不想啊,查看手冊(cè)我們可以看到 82 * string DOMDocument::saveXML ([ DOMNode $node [, int $options ]] ) 83 * Returns the XML, or FALSE if an error occurred. 84 * 這個(gè)方法,參數(shù)可以缺省,返回是一個(gè)xml,也就是字符串吧,定義不是:string嗎 85 */ 86 //echo $dom->saveXML(); 87 /* 88 * 我們看到結(jié)果如圖1,頁(yè)面上什么也沒(méi)有,但是請(qǐng)注意頭部那個(gè)標(biāo)簽,我們?cè)儆益I看源碼。如圖2 89 * 明白了,之所以沒(méi)有在頁(yè)面上看到是因?yàn)?a href='http://m.survivalescaperooms.com/tag/liulanqi_7527_1.html' target='_blank'>瀏覽器解析了我們的這個(gè)xml 90 * 那么怎么避免瀏覽器解析? 91 * 給瀏覽器發(fā)生一個(gè)頭部信息,告訴瀏覽器給的是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)在我們?cè)囍鴮⑸厦嫔傻膞ml 保存成一個(gè)文件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 * 同時(shí),我們發(fā)現(xiàn),生成的這個(gè)xml文檔,沒(méi)有任何格式,沒(méi)有空格、沒(méi)有換行、一行就完成了。111 * 這恰恰驗(yàn)證了 上面說(shuō)的 在xml中一切皆是節(jié)點(diǎn)112 */113 114 ?>
圖片:
圖一
圖二
圖三:
圖四:
好了,就這么多吧,睡覺(jué)了。如果有什么錯(cuò)誤,歡迎大家批評(píng)指正啊。晚安,博客園
PHP編程鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
網(wǎng)友關(guān)注