欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用php操作xml教程

 更新時間:2021年07月07日 17:10:59   作者:謙行  
這篇文章主要介紹了使用php操作xml教程,本篇文章通過簡要的案例和文檔描述,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

php操作xml

最近計劃寫個人的小網(wǎng)站,一系列原因選擇了用php來寫,最大的問題就是雖然php很流行,但我從來沒有接觸過php,看了一個多星期的基本語法后做些小練習(xí)熱熱身,但是期間是各種問題啊,主要是對php不熟悉,遇到一些總結(jié)一些吧。

數(shù)據(jù)

<?xml version="1.0"?>
<books>
    <book name="JavaScript: The Defiitive Guide" publisher="O'Reilly Media, Inc.">
        <author>David Flanagan</author>
    </book>
    <book name="PHP anf MySQL Web Development" publisher="Perason Education">
        <author>Luke Welling</author>
        <author>Laura Thomson</author>
    </book>
    <book name="HTTP: The Defiitive Guide" publisher="O'Reilly Media, Inc.">
        <author>David Courley</author>
        <author>Brian Totty</author>
    </book>
</books>

XML幾個基本概念

節(jié)點:節(jié)點也就是很多程序語言中處理XML時的Node,節(jié)點是一個比較寬泛的概念,在XML中元素,屬性,名字空間,注釋,文本內(nèi)容,處理指令,還有整個文檔都屬于節(jié)點,也就是說XML文檔中每個獨立的一小部分都是節(jié)點,是,也是,name=”XXXX”也是,標(biāo)簽是,甚至作者的名字David Flanagan都是一個文本節(jié)點。

元素:很多程序語言都有對XML處理,節(jié)點是一個很寬泛的概念,因為要統(tǒng)一API,對節(jié)點不會有過多方法,而元素也就是Element是節(jié)點的一個子集,簡單講就是這樣的標(biāo)簽才算,一般會有很多針對元素的操作方法。

屬性:這個比較好理解,在<>里面的類似XX=”O(jiān)O”等東西都是屬性節(jié)點

轉(zhuǎn)義字符:和HTML等類似,xml也有語言占用的符號,想使用的這些特殊字符的時候需要轉(zhuǎn)義

<

&lt;

>

&gt;

&

&amp;

&apos;

&quot;

DOMDocument對象

我使用的是DOMDocument對象來操作xml,感覺用起來比simpleXml科學(xué)一些,當(dāng)然第一天使用php,純屬個人感覺。DOMDocument有幾個常用的屬性和方法。

屬性 作用
attributes 節(jié)點屬性集合
parentNode 節(jié)點父節(jié)點
documentElement 文檔根節(jié)點
nodeName 節(jié)點的名字
nodeType 節(jié)點類型
nodeValue 節(jié)點值
Text 節(jié)點及其子節(jié)點轉(zhuǎn)換為文字
方法 作用
appendChild 為節(jié)點添加子節(jié)點
createAttribute 創(chuàng)建屬性節(jié)點
createElement 創(chuàng)建元素
getElementsByTagName 通過節(jié)點名獲取節(jié)點集合
hasChildNodes 判斷節(jié)點是否有子節(jié)點
insertBefore 在節(jié)點
Load 通過文檔路徑加載xml
loadXML 加載zml字符串
removeChild 刪除子節(jié)點
removeAttribute 刪除屬性節(jié)點
save 保存文檔

加載xml

$path=$_SERVER["DOCUMENT_ROOT"].'/books.xml';
    $books=new DOMDocument();
    $books->load($path);

讀取/遍歷節(jié)點與屬性

$bookElements=$books->getElementsByTagName('book');

    foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            echo strtoupper($attr->nodeName).' —— '.$attr->nodeValue.'<br/>';
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName('author') as $author) {
            echo $author->nodeValue.' ';
        }
        echo '<br/><br/>';
    }

在這里插入圖片描述

當(dāng)然對于很多屬性,只想讀一個,可以通過item(index)方法按索引讀取

echo $book->attributes->item(1)->nodeValue;

還可以通過強大的xpath查詢

$xpath = new domxpath($books);
$bookElements=$xpath->query("/books/book");

修改屬性/節(jié)點

foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            #$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
            $attr->nodeValue=strtoupper($attr->nodeValue);
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName('author') as $author) {
            $author->nodeValue=strtoupper($author->nodeValue);
        }

    }
    $books->save($path);

在這里插入圖片描述

對屬性修改可以直接訪問其nodeValue改動,也可以使用setAttribute方法,改動完了別忘了使用save保存。

$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
$attr->nodeValue=strtoupper($attr->nodeValue);

添加元素/屬性

$newBook=$books->createElement('book'); #創(chuàng)建新元素
    $newBook->setAttribute('name','PHP Objects, Patterns, and Practice');#創(chuàng)建新屬性,方法一

    $publisher=$books->createAttribute('publisher');#創(chuàng)建新屬性,方法二
    $publisher->nodeValue='Apress L.P';
    $newBook->appendChild($publisher); #把屬性添加到元素上

    $author=$books->createElement('author');#創(chuàng)建子元素
    $author->nodeValue='Matt Zandstra';
    $newBook->appendChild($author);#把子元素添加到父元素上

    $books->documentElement->appendChild($newBook);#添加整個節(jié)點
    $books->save($path);

刪除屬性/節(jié)點

$first=$bookElements->item(0);
    $first->removeAttribute('publisher');

    $second=$bookElements->item(1);
    $second->parentNode->removeChild($second);

    $books->save($path);

在這里插入圖片描述

到此這篇關(guān)于使用php操作xml教程的文章就介紹到這了,更多相關(guān)php操作xml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 學(xué)習(xí)php分頁代碼實例

    學(xué)習(xí)php分頁代碼實例

    學(xué)習(xí)PHP,一定會遇到操作MYSQL數(shù)據(jù)庫,而且會對數(shù)據(jù)庫里的數(shù)據(jù)做分頁顯示出來的問題,下面寫一個小例子學(xué)習(xí)一下PHP分頁的方法。
    2013-10-10
  • Yii中srbac權(quán)限擴展模塊工作原理與用法分析

    Yii中srbac權(quán)限擴展模塊工作原理與用法分析

    這篇文章主要介紹了Yii中srbac權(quán)限擴展模塊工作原理與用法,結(jié)合實例形式分析了srbac模塊的原理及權(quán)限操作的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • PC端微信掃碼支付成功之后自動跳轉(zhuǎn)php版代碼

    PC端微信掃碼支付成功之后自動跳轉(zhuǎn)php版代碼

    這篇文章主要為大家詳細介紹了微信掃碼支付成功之后自動跳轉(zhuǎn)php版代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • PHP獲取用戶客戶端真實IP的解決方案

    PHP獲取用戶客戶端真實IP的解決方案

    獲取客戶端ip其實不是個簡單的活兒,因為存在Ip欺騙,和代理問題,所以獲取客戶端的IP的真實性會打折扣的,不能百分百準(zhǔn)確.但是我們盡量使用比較完善的方法獲取客戶的ip,下面小編給大家分享PHP獲取用戶客戶端真實IP的方法,一起看看吧
    2016-10-10
  • destoon二次開發(fā)常用數(shù)據(jù)庫操作

    destoon二次開發(fā)常用數(shù)據(jù)庫操作

    這篇文章主要介紹了destoon二次開發(fā)常用數(shù)據(jù)庫操作,需要的朋友可以參考下
    2014-06-06
  • php設(shè)計模式之原型模式分析【星際爭霸游戲案例】

    php設(shè)計模式之原型模式分析【星際爭霸游戲案例】

    這篇文章主要介紹了php設(shè)計模式之原型模式,結(jié)合星際爭霸游戲案例形式分析了PHP原型模式的原理、使用方法與操作注意事項,需要的朋友可以參考下
    2020-03-03
  • PHP批量去除BOM頭代碼分享

    PHP批量去除BOM頭代碼分享

    這篇文章主要介紹了PHP批量去除BOM頭代碼分享,本文直接給出實現(xiàn)代碼,代碼比較簡單,容易看懂,需要的朋友可以參考下
    2015-06-06
  • Chart.js在Laravel項目中的應(yīng)用示例

    Chart.js在Laravel項目中的應(yīng)用示例

    本篇文章主要介紹了Chart.js在Laravel項目中的應(yīng)用示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Laravel如何使用Redis共享Session

    Laravel如何使用Redis共享Session

    這篇文章主要介紹了Laravel如何使用Redis共享Session ,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • php判斷電腦訪問、手機訪問的例子

    php判斷電腦訪問、手機訪問的例子

    現(xiàn)在使用手機上網(wǎng)的人越來越多了,所以手機用戶給網(wǎng)站帶來流量也是非常可觀的。但是對于只適合PC端的網(wǎng)站想讓手機訪問,那么體驗度一定會很差,因為該站的css樣式只適合用電腦瀏覽器訪問。
    2014-05-05

最新評論