国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

如何通過PHP生成和獲取XML格式數(shù)據(jù)

2020-03-22 18:09:29
字體:
供稿:網(wǎng)友
  • 本文實(shí)例講述了PHP生成和獲取XML格式數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:
    在做數(shù)據(jù)接口時(shí),我們通常要獲取第三方數(shù)據(jù)接口或者給第三方提供數(shù)據(jù)接口,而這些數(shù)據(jù)格式通常是以XML或者JSON格式傳輸,這里將介紹如何使用PHP生成XML格式數(shù)據(jù)供第三方調(diào)用以及如何獲取第三方提供的XML數(shù)據(jù)。
    生成XML格式數(shù)據(jù)
    我們假設(shè)系統(tǒng)中有一張學(xué)生信息表student,需要提供給第三方調(diào)用,并有id,name,sex,age分別記錄學(xué)生的姓名、性別、年齡等信息。
    CREATE TABLE `student` (
    `id` int(11) NOT NULL auto_increment,
    `name` varchar(50) NOT NULL,
    `sex` varchar(10) NOT NULL,
    `age` smallint(3) NOT NULL default '0',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    首先,建立createXML.php文件,先連接數(shù)據(jù)庫,獲取數(shù)據(jù)。
    include_once ("connect.php"); //連接數(shù)據(jù)庫
    $sql = "select * from student";
    $result = mysql_query($sql) or die("Invalid query: " . mysql_error());
    while ($row = mysql_fetch_array($result)) {
    $arr[] = array(
    'name' => $row['name'],
    'sex' => $row['sex'],
    'age' => $row['age']
    );
    }
    這個(gè)時(shí)候,數(shù)據(jù)就保存在$arr中,你可以使用print_r打印下數(shù)據(jù)測試。
    接著,建立xml,循環(huán)數(shù)組,將數(shù)據(jù)寫入到xml對(duì)應(yīng)的節(jié)點(diǎn)中。
    $doc = new DOMDocument('1.0', 'utf-8'); // 聲明版本和編碼
    $doc->formatOutput = true;
    $r = $doc->createElement_x("root");
    $doc->appendChild($r);
    foreach ($arr as $dat) {
    $b = $doc->createElement_x("data");
    $name = $doc->createElement_x("name");
    $name->appendChild($doc->createTextNode($dat['name']));
    $b->appendChild($name);
    $sex = $doc->createElement_x("sex");
    $sex->appendChild($doc->createTextNode($dat['sex']));
    $b->appendChild($sex);
    $age = $doc->createElement_x("age");
    $age->appendChild($doc->createTextNode($dat['age']));
    $b->appendChild($age);
    $r->appendChild($b);
    }
    echo $doc->saveXML();
    我們調(diào)用了PHP內(nèi)置的類DOMDocument來處理與生成xml。最終生成的xml格式請(qǐng)點(diǎn)擊這里看效果
    xml version="1.0" encoding="utf-8"?>

    李王皓

    21

    ...
    獲取XML格式數(shù)據(jù)
    現(xiàn)在我們假設(shè)要從第三方獲取學(xué)生信息,數(shù)據(jù)格式是XML,我們需要使用PHP解析XML,然后將解析后的數(shù)據(jù)顯示或者寫入本地?cái)?shù)據(jù)庫。而這里關(guān)鍵的一步是解析XML。
    PHP有很多中方法可以解析XML,其中PHP提供了內(nèi)置的XMLReader類可以循序地瀏覽過xml檔案的節(jié)點(diǎn),你可以想像成游標(biāo)走過整份文件的節(jié)點(diǎn),并抓取需要的內(nèi)容。使用XMLReader是高效的,尤其是讀取非常大的xml數(shù)據(jù),相對(duì)其他方法,使用XMLReader消耗內(nèi)存非常少。
    header("Content-type:text/html; Charset=utf-8");
    $url = "http://www.helloweba.com/demo/importXML/createXML.php";
    $reader = new XMLReader(); //實(shí)例化XMLReader
    $reader->open($url); //獲取xml
    $i=1;
    while ($reader->read()) {
    if ($reader->nodeType == XMLReader::TEXT) { //判斷node類型
    $m = $i%3;
    if($m==1)
    $name = $reader->value; //讀取node值
    if($m==2)
    $sex = $reader->value;
    if($m==0){
    $age = $reader->value;
    $arr[] = array(
    'name' => $name,
    'sex' => $sex,
    'age' => $age
    );
    }
    $i++;
    }
    }
    //print_r($arr);
    為了將數(shù)據(jù)name,sex和age分開,我們使用$i%3來判斷取模,因?yàn)樵讷@取的xml中,節(jié)點(diǎn)data下的信息是以3個(gè)子節(jié)點(diǎn)存在的。
    希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 桂东县| 杂多县| 邢台市| 锡林郭勒盟| 龙南县| 大姚县| 铅山县| 桐梓县| 蚌埠市| 咸阳市| 勃利县| 遂宁市| 岫岩| 财经| 隆尧县| 浪卡子县| 海原县| 鄯善县| 石门县| 夏邑县| 湾仔区| 浪卡子县| 封丘县| 台北市| 高青县| 昌吉市| 泗洪县| 沐川县| 宾川县| 夏河县| 克山县| 巨野县| 柞水县| 灵台县| 浦东新区| 牡丹江市| 芷江| 乡宁县| 南澳县| 米泉市| 额敏县|