久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

PHP:XML操作(后天堂

 月影曉風(fēng) 2014-06-08

XML 是一個(gè)很實(shí)用的東西,存儲(chǔ)數(shù)據(jù),、交換數(shù)據(jù)都很方便,但如何對(duì) XML 進(jìn)行基本的操作呢,?

對(duì) XML 的操作包括創(chuàng)建 XML 文檔,,添加、查看、修改,、刪除數(shù)據(jù),,操作方法有很多種,可以使用 DOMDocument 類,、other,、other 等都可以實(shí)現(xiàn),本文介紹的是通過(guò) DOMDocument 類進(jìn)行操作,。


DOMDocument 類

屬性類型說(shuō)明
documentElementDOMElementXML 文檔的根節(jié)點(diǎn),,允許直接訪問文檔各個(gè)子元素節(jié)點(diǎn)
documentURIstringXML 文檔的真實(shí)物理路徑
encodingstringXML 文檔的編碼方式
formatOutputbool格式化輸出,友好地保留縮進(jìn)和空格
preserveWhiteSpacebool文檔保存時(shí)保留多余的空格輸出
validateOnParsebool解析 XML 文檔時(shí)是否驗(yàn)證文檔格式
方法返回值類型說(shuō)明
load(xmlfile)int打開一個(gè) xml 文檔
save(xmlfile)int保存一個(gè) xml 文檔
loadHTMLFILE(htmlfile)int打開一個(gè) html 文檔
saveHTMLFILE(htmlfile)int保存一個(gè) html 文檔
getElementById(id)DOMNodeList獲取擁有指定 ID 的元素節(jié)點(diǎn)
getElementsByTagName(tag)DOMNodeList獲取指定標(biāo)簽名稱的元素節(jié)點(diǎn)
createElement(TagName[,Value])DOMElement創(chuàng)建一個(gè)元素節(jié)點(diǎn)
getAttribute(AttrName)DOMAttr獲取一個(gè)元素節(jié)點(diǎn)的屬性
createAttribute(AttrName)DOMAttr創(chuàng)建一個(gè)元素節(jié)點(diǎn)的屬性
setAttribute(AttrName,AttrValue)DOMAttr設(shè)置元素節(jié)點(diǎn)的屬性和值
createTextNode(Value)DOMText創(chuàng)建一個(gè)文本內(nèi)容
appendChild(DOMNode)DOMNode添加一個(gè)元素節(jié)點(diǎn)
removeChild(DOMNode)DOMNode移除一個(gè)元素節(jié)點(diǎn)
replaceChild(DOMNode)DOMNode替換一個(gè)元素節(jié)點(diǎn)
hasAttributes()bool判斷一個(gè)元素節(jié)點(diǎn)是否有屬性
hasChildNodes()bool判斷一個(gè)元素節(jié)點(diǎn)是否有子節(jié)點(diǎn)

注意:以上的屬性和方法只是此類的一部分,,比較常用和實(shí)用,,點(diǎn)此 查看全部


創(chuàng)建XML文檔

說(shuō)明:創(chuàng)建XML文檔之前必須對(duì)XML有所了解,,本文不做贅述,,請(qǐng)參考相關(guān)知識(shí)。


PHP:create.php

    
    $XML=new DOMDocument("1.0","utf-8");	// 實(shí)例化一個(gè)對(duì)象,,并設(shè)置 XML 版本和編碼
    
    $XML->formatOutput=true;			// 格式化輸出,,保留縮進(jìn)
    $XML->preservaWhiteSpace=false;		// 不保留空格,這個(gè)是輔助格式化輸出的
    
    $root=$XML->createElement("Languages");		// 創(chuàng)建根節(jié)點(diǎn),,有且只能有一個(gè)
    
    $lang1=$XML->createElement("Lang","Chinese");	// 創(chuàng)建一個(gè)子節(jié)點(diǎn),,這是方法一
    $lang1->setAttribute("id","1001");			// 設(shè)置子節(jié)點(diǎn)的屬性
    
    $lang2=$XML->createElement("Lang");			// 創(chuàng)建一個(gè)子節(jié)點(diǎn),這是方法二
    $lang2_text=$XML->createTextNode("English");	// 創(chuàng)建子節(jié)點(diǎn)的內(nèi)容
    $lang2_Attr_n=$XML->createAttribute("id");		// 創(chuàng)建子節(jié)點(diǎn)的屬性名稱
    $lang2_Attr_v=$XML->createTextNode("1002");		// 創(chuàng)建子節(jié)點(diǎn)的屬性內(nèi)容
    $lang2_Attr_n->appendChild($lang2_Attr_v);		// 將屬性內(nèi)容賦值給屬性名稱
    $lang2->appendChild($lang2_text);			// 為創(chuàng)建的空子節(jié)點(diǎn)添加內(nèi)容
    $lang2->appendChild($lang2_Attr_n);			// 為創(chuàng)建的空子節(jié)點(diǎn)添加屬性

    $root->appendChild($lang1);				// 添加子節(jié)點(diǎn),,不添加將不能顯示 $lang1
    $root->appendChild($lang2);				// 添加子節(jié)點(diǎn),,不添加將不能顯示 $lang2
    
    $XML->appendChild($root);				// 最重要的一步:將根節(jié)點(diǎn)添加到文檔里面
    
    $XML->save("language.xml");				// 保存 XML 文檔,路徑是相對(duì)路徑
    

XML:language.xml

<?xml version="1.0" encoding="utf-8"?>

<Languages>

<Lang id="1001">Chinese</Lang>

<Lang id="1002">English</Lang>

</Languages>


提示:如果不格式化輸出,,XML 將會(huì)顯示如下,。

<?xml version="1.0" encoding="utf-8"?>

<Languages><Lang id="1001">Chinese</Lang><Lang id="1002">English</Lang></Languages>


讀取XML數(shù)據(jù)

說(shuō)明:讀取 XML 數(shù)據(jù)是通過(guò)獲取 XML 中的節(jié)點(diǎn)然后再讀取里面的內(nèi)容的方式來(lái)實(shí)現(xiàn)的,獲取節(jié)點(diǎn)有兩種方法:getElementById() 和 getElementsByTagName(),。


①. getElementById()


XML:book.xml打開

PHP:read.php

    
    $XML=new DOMDocument("1.0","utf-8");	// 實(shí)例化一個(gè)對(duì)象,,并設(shè)置 XML 版本和編碼
    $XML->validateOnParse=true;			// 開啟驗(yàn)證,DTD 驗(yàn)證文檔格式
    $XML->load("language.xml");			// 打開一個(gè) XML 文件
    $langs=$XML->getElementById("b002");	// 獲取 id 為 "b002" 的節(jié)點(diǎn)
    echo $langs->nodeValue;			// 輸出 《西游記》
    

注意?。,。。,。,。∵@個(gè)函數(shù)比較特殊,,需要注意以下幾點(diǎn):

第一:請(qǐng)仔細(xì)看 book.xml,,這個(gè)文檔是含有 DTD(文檔類型定義),,第 2-5 行,不然函數(shù)無(wú)法識(shí)別 ID,。

第二:再次觀看 book.xml,,元素屬性值必須以字母開頭,否則此函數(shù)會(huì)鬧情緒出現(xiàn)小錯(cuò)誤,。

第三:要想使用此函數(shù)必須開啟 XML 驗(yàn)證,,即將參數(shù) validateOnParse 設(shè)置為 true 。


②. getElementsByTagName()


XML:language.xml打開

PHP:read.php

    
    $XML=new DOMDocument("1.0","utf-8");	// 實(shí)例化一個(gè)對(duì)象,,并設(shè)置 XML 版本和編碼
    $XML->load("language.xml");			// 打開一個(gè) XML 文件
    
    $langs=$XML->getElementsByTagName("Lang");	// 通過(guò)標(biāo)簽名獲取指定的節(jié)點(diǎn)集合
    $lang=$langs->item(1);			// 通過(guò) item() 獲取指定節(jié)點(diǎn)
    echo $lang->nodeValue;			// 顯示節(jié)點(diǎn)的文本內(nèi)容,,English
    

修改XML數(shù)據(jù)

說(shuō)明:修改 XML 數(shù)據(jù)是通過(guò)獲取 XML 中的節(jié)點(diǎn)然后再對(duì)節(jié)點(diǎn)賦值的方式來(lái)實(shí)現(xiàn)的。


XML:media.xml打開

PHP:edit.php

    
    $XML=new DOMDocument("1.0","utf-8");	// 實(shí)例化一個(gè)對(duì)象,,并設(shè)置 XML 版本和編碼
    $XML->load("language.xml");			// 打開一個(gè) XML 文件
    
    $langs=$XML->getElementsByTagName("Lang");	// 通過(guò)標(biāo)簽名獲取指定的節(jié)點(diǎn)集合
    $lang=$langs->item(1);			// 通過(guò) item() 獲取指定節(jié)點(diǎn)
    $lang->nodeValue="Japanese";		// 為節(jié)點(diǎn)賦值,,Japanese
    
    $XML->save("language.xml");			// 親,記得保存
    

刪除XML數(shù)據(jù)

說(shuō)明:刪除 XML 數(shù)據(jù)是通過(guò)獲取 XML 中的節(jié)點(diǎn)集合然后再移除子節(jié)點(diǎn)的方式來(lái)實(shí)現(xiàn)的,。

注意:在執(zhí)行刪除操作之前,,一定得弄清楚一點(diǎn),只有父節(jié)點(diǎn)才能刪除子節(jié)點(diǎn),,其他的都無(wú)法刪除,。


①. 刪除單行嵌套的數(shù)據(jù)


XML:language.xml打開

PHP:delete.php

    
    $XML=new DOMDocument("1.0","utf-8");	// 實(shí)例化一個(gè)對(duì)象,并設(shè)置 XML 版本和編碼
    $XML->load("language.xml");			// 打開一個(gè) XML 文件
    $root=$XML->documentElement;		// 獲取根節(jié)點(diǎn)
    $parent=$XML->getElementsByTagName("Languages")->item(0);	// 獲取指定的節(jié)點(diǎn)集合的父元素
    $langs=$XML->getElementsByTagName("Lang");			// 獲取指定的節(jié)點(diǎn)集合
    $lang=$langs->item(1);					// 通過(guò) item() 獲取指定節(jié)點(diǎn)
    
    // 下面的三行代碼用于測(cè)試,,測(cè)試三次,,每次只使用其中一行,,通過(guò)對(duì)比來(lái)驗(yàn)證結(jié)論,!
    
    $XML->removeChild($lang);			// 錯(cuò)誤,$XML 不是父節(jié)點(diǎn)(刪除此行程序會(huì)正常)
    $root->removeChild($lang);			// 正確,,$root 恰巧是父節(jié)點(diǎn),,因?yàn)榍短字挥幸粚?    $parent->removeChild($lang);		// 正確,$parent 是真正的父節(jié)點(diǎn)
    
    $XML->save("language.xml");			// 親,,記得保存
    

②. 刪除多行嵌套的數(shù)據(jù)


XML:media.xml打開

PHP:delete.php

    
    $XML=new DOMDocument("1.0","utf-8");	// 實(shí)例化一個(gè)對(duì)象,,并設(shè)置 XML 版本和編碼
    $XML->load("media.xml");			// 打開一個(gè) XML 文件
    $root=$XML->documentElement;		// 獲取根節(jié)點(diǎn)
    $parent=$XML->getElementsByTagName("music")->item(0);	// 獲取指定的節(jié)點(diǎn)集合的父元素
    $songs=$XML->getElementsByTagName("song");			// 獲取指定的節(jié)點(diǎn)集合
	
    foreach($songs as $song)				// 遍歷要操作的整個(gè)節(jié)點(diǎn)集合
    {
        if($song->getAttribute("id")=="102")		// 刪除 id 為102的節(jié)點(diǎn)
        {   // 調(diào)試四次,每次只使用其中一行,!
            $XML->removeChild($song);			// 錯(cuò)誤,,$XML 不是父節(jié)點(diǎn)
            $root->removeChild($song);			// 錯(cuò)誤,$root 不是父節(jié)點(diǎn)
            $songs->removeChild($song);			// 錯(cuò)誤,,$songs 不是父節(jié)點(diǎn)
            $parent->removeChild($song);		// 正確,,$parent 是真正的父節(jié)點(diǎn)
        }
    }
    
    $XML->save("media.xml");			// 親,全部講完了,,記得好評(píng)呢~
    

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多