溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解析XML的案例

發(fā)布時間:2020-12-02 10:22:42 來源:億速云 閱讀:121 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關解析XML的案例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一.解析XML

創(chuàng)建demo.xml文件:

<?xml version="1.0" encoding="UTF-8"?> <bookstore>
    <book book_id="1">
      <title>php</title> 
      <author>php入門到放棄</author> 
    </book>
    <book book_id="2">
      <title>java</title> 
      <author>java入門到放棄</author> 
    </book>
    <book book_id="3">
      <title>C</title> 
      <author>C入門到放棄</author> 
    </book></bookstore>

使用PHP解析demo.xml中的內容,以獲取到php這個文本節(jié)點為例:

<?php
    /*思路:1.先載入xml文檔 
    2.獲取節(jié)點列表對象 
    3.獲取子節(jié)點對象 
    4.獲取子節(jié)點列表對象 
    5.獲取文本對象 如果層級比較深就是循環(huán)2-4步,先拿列表對象,再拿子節(jié)點對象...*/
    $dom = new DOMDocument('1.0','UTF-8');
    //print_r($dom); //DOMDocument Object
    $dom->load('demo.xml'); //載入要解析的xml文檔
    $titleList = $dom->getElementsByTagName('title'); ////DOMNodeList Object ( [length] => 3 ) 獲取節(jié)點列表對象
    $title = $titleList->item(0); //DOMElement Object 獲取子節(jié)點對象
    $title = $title->childNodes; //DOMNodeList Object ( [length] => 1 )獲取子節(jié)點列表對象
    $title = $title->item(0); //DOMText Object 獲取到文本對象
    $text = $title->wholeText; //獲取到文本內容
    echo $text; //php
    echo '<br>';
    //也可以直接寫成連貫操作:  
    $text = $dom->getElementsByTagName('title')->item(0)->childNodes->item(0)->wholeText;
    echo $text; //php
    echo '<br>';
    //第二種方法:
    $text = $dom->getElementsByTagName('title')->item(0)->nodeValue; //獲取到文本內容
    echo $text; //php

除了解析之外,還可以對xml節(jié)點進行刪除和替換操作:

    $dom = new DOMDocument('1.0','UTF-8');
    $dom->load('demo.xml'); //載入要解析的xml文檔
    /**
     *xml刪除節(jié)點
     * */
    $php = $dom->getElementsByTagName('book')->item(0); //獲取文本節(jié)點
    $php->parentNode->removeChild($php); //獲取文本節(jié)點的父節(jié)點,然后站在父節(jié)點的立場刪除子文本節(jié)點
    /**
     * xml替換節(jié)點
     * */
    $java = $dom->getElementsByTagName('title')->item(0); //獲取要替換的文本節(jié)點
    $newnode = $dom->createTextNode('python'); //創(chuàng)建新的文本節(jié)點
    $java->replaceChild($newnode,$java->firstChild); //用新節(jié)點替換舊文本節(jié)點內容
    header("content-type:text/xml");
    echo $dom->saveXML(); //直接輸出xml文本     

二.創(chuàng)建XML

使用PHP創(chuàng)建一個如下的XML文件:

<?xml version="1.0" encoding="UTF-8"?> <bookstore>
 <book book_id="1">
     <title>php</title>
     <author><![CDATA[PHP是世界上最好的編程語言.emmm...]]></author>
 </book></bookstore>

PHP代碼:

<?php
    $dom = new DOMDocument('1.0','UTF-8');
    $text =  $dom->createTextNode('php'); //創(chuàng)建文本節(jié)點
    $title = $dom->createElement('title'); //創(chuàng)建普通節(jié)點
    $title->appendChild($text); //將文本節(jié)點作為子節(jié)點添加到普通節(jié)點內
    $cdata = $dom->createCDATASection('PHP是世界上最好的編程語言.emmm...'); //創(chuàng)建CDATA節(jié)點
    $author = $dom->createElement('author'); //創(chuàng)建普通節(jié)點
    $author->appendChild($cdata); //將CDATA節(jié)點作為子節(jié)點添加到普通節(jié)點內
    $book = $dom->createElement('book'); //創(chuàng)建普通節(jié)點
    //將上面創(chuàng)建的兩個普通節(jié)點作為子節(jié)點添加到普通節(jié)點內
    $book->appendChild($title);
    $book->appendChild($author);
    $book_id = $dom->createAttribute('book_id'); //創(chuàng)建屬性名
    $book_id->value = '1'; //創(chuàng)建屬性值
    $book->appendChild($book_id); //將屬性加到普通節(jié)點內
    $bookstore = $dom->createElement('bookstore'); //創(chuàng)建普通節(jié)點
    $bookstore->appendChild($book); //將普通節(jié)點作為子節(jié)點添加到普通節(jié)點內
    $dom->appendChild($bookstore); //將普通節(jié)點添加到文檔內
    // header("content-type:text/xml");
    // echo $dom->saveXML(); //直接輸出xml文本
    echo $dom->save('demo.xml'); //生成xml文件

在瀏覽器輸出如下圖:

解析XML的案例

關于解析XML的案例就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)
推薦閱讀:
  1. SQL解析XML
  2. 解析XML

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

xml
AI