婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP封裝的XML簡單操作類完整實例

PHP封裝的XML簡單操作類完整實例

熱門標簽:全國各省地圖標注點 周口網絡回撥外呼系統 外呼系統人工客服 商丘外呼系統好處 網絡電話400申請 福建高頻外呼防封系統哪家好 百度地圖標注類型是酒店 400電話申請辦理 隨州銷售電銷機器人公司

本文實例講述了PHP封裝的XML簡單操作類。分享給大家供大家參考,具體如下:

xml_dom.php封裝類文件:

?php
/**
 * Class xml_dom
 *
nodeType:
1 XML_ELEMENT_NODE(元素類型)
2 XML_ATTRIBUTE_NODE
3 XML_TEXT_NODE
4 XML_CDATA_SECTION_NODE
5 XML_ENTITY_REFERENCE_NODE
6 XML_ENTITY_NODE
7 XML_PROCESSING_INSTRUCTION_NODE
8 XML_COMMENT_NODE(注釋類型)
9 XML_DOCUMENT_NODE
10 XML_DOCUMENT_TYPE_NODE
11 XML_DOCUMENT_FRAGMENT_NODE
12 XML_NOTATION_NODE
 *
PHP DOMDocument操作:
屬性:
Attributes   存儲節點的屬性列表(只讀)
childNodes   存儲節點的子節點列表(只讀)
dataType   返回此節點的數據類型
Definition   以DTD或XML模式給出的節點的定義(只讀)
Doctype   指定文檔類型節點(只讀)
documentElement   返回文檔的根元素(可讀寫)
firstChild   返回當前節點的第一個子節點(只讀)
Implementation   返回XMLDOMImplementation對象
lastChild   返回當前節點最后一個子節點(只讀)
nextSibling   返回當前節點的下一個兄弟節點(只讀)
nodeName   返回節點的名字(只讀)
nodeType   返回節點的類型(只讀)
nodeTypedValue   存儲節點值(可讀寫)
nodeValue   返回節點的文本(可讀寫)
ownerDocument   返回包含此節點的根文檔(只讀)
parentNode   返回父節點(只讀)
Parsed   返回此節點及其子節點是否已經被解析(只讀)
Prefix   返回名稱空間前綴(只讀)
preserveWhiteSpace   指定是否保留空白(可讀寫)
previousSibling   返回此節點的前一個兄弟節點(只讀)
Text   返回此節點及其后代的文本內容(可讀寫)
url   返回最近載入的XML文檔的URL(只讀)
Xml   返回節點及其后代的XML表示(只讀)
方法:
appendChild   為當前節點添加一個新的子節點,放在最后的子節點后
cloneNode   返回當前節點的拷貝
createAttribute   創建新的屬性
createCDATASection   創建包括給定數據的CDATA段
createComment   創建一個注釋節點
createDocumentFragment   創建DocumentFragment對象
createElement   創建一個元素節點
createEntityReference   創建EntityReference對象
createNode   創建給定類型,名字和命名空間的節點
createPorcessingInstruction   創建操作指令節點
createTextNode   創建包括給定數據的文本節點
getElementsByTagName   返回指定名字的元素集合
hasChildNodes   返回當前節點是否有子節點
insertBefore   在指定節點前插入子節點
Load   導入指定位置的XML文檔
loadXML   導入指定字符串的XML文檔
removeChild   從子結點列表中刪除指定的子節點
replaceChild   從子節點列表中替換指定的子節點
Save   把XML文件存到指定節點
selectNodes   對節點進行指定的匹配,并返回匹配節點列表
selectSingleNode   對節點進行指定的匹配,并返回第一個匹配節點
transformNode   使用指定的樣式表對節點及其后代進行轉換
 *
 */
class xml_dom
{
  protected $dblink; // xml連接
  protected $dbfile; // xml文件路徑
  /**
   * xml文件 構造類
   * @param $db_file xml文件
   */
  public function __construct($db_file)
  {
    $this->dbfile = $db_file;
    if(!file_exists($db_file))
    {
//     die('未找到數據庫文件');
      $this->dblink = new DOMDocument('1.0', 'utf-8');
      $root = $this->dblink->createElement('root');
      $this->dblink->appendChild($root);
      $this->dblink->formatOutput = true;  // xml文件保留縮進樣式
      $this->dblink->save($this->dbfile);
    }
    else
    {
      $this->dblink = new DOMDocument();
      $this->dblink->formatOutput = true;
      $this->dblink->load($this->dbfile);
    }
  }
  /**
   * 遍歷所有元素
   * ===============================================
   * 標準xml文件,一個元素可能有n個屬性,可用自定義鍵[nodevalue]獲取元素值
   * ?xml version="1.0" encoding="utf-8"?>
   * table name="posts">
   *   column name="id">1/column>
   *   column name="title">標題一/column>
   *   column name="content">詳細內容一/column>
   * /table>
   * ===============================================
   * 簡單xml文件,沒有屬性,鍵值一一對應
   * ?xml version="1.0" encoding="utf-8"?>
   * root>
   *   posts>
   *     id>1/id>
   *     title>標題一/title>
   *     content>詳細內容一/content>
   *   /posts>
   * /root>
   * @param $node
   * @return array
   */
  function getData($node=0){
    if(!$node)
    {
      $node = $this->dblink->documentElement;
    }
    $array = array();
    foreach($node->attributes as $attribute)
    {
      $key = $attribute->nodeName;
      $val = $attribute->nodeValue;
      $array[$key] = $val;
    }
    if(count($array))  // 有屬性,則用[nodevalue]鍵代表值
    {
      $array['nodevalue'] = $node->nodeValue;
    }
    // 遞歸遍歷所有子元素
    $node_child = $node->firstChild;
    while($node_child)
    {
      if(XML_ELEMENT_NODE == $node_child->nodeType)
      {
        $tagname = $node_child->tagName;
        $result = $this->getData($node_child);
        if(isset($array[$tagname])) // 發現有重復tagName的子元素存在,所以改用數組存儲重復tagName的所有子元素
        {
          if(!is_array($array[$tagname][0]))
          {
            $tmp = $array[$tagname];
            $array[$tagname] = array();
            $array[$tagname][] = $tmp;
          }
          $array[$tagname][] = $result;
        }
        else
        {
          $array[$tagname] = $result;
        }
      }
      $node_child = $node_child->nextSibling;
    }
    if(!count($array)) // 沒有子元素沒有屬性=最末子元素,就返回該元素的nodeValue值
    {
      return $node->nodeValue;
    }
    return $array;
  }
  /**
   * 把array數據寫到xml文件(覆蓋)
   * @param $data
   */
  public function setData($data,$node=0)
  {
    $is_root = false;
    if(!$node)
    {
      $is_root = true;
      $node = $this->dblink->documentElement;
      // 清除原數據
      $remove = array();
      $node_child = $node->firstChild;
      while($node_child)
      {
        $remove[] = $node_child;
        $node_child = $node_child->nextSibling;
      }
      foreach($remove as $r)
      {
        $node->removeChild($r);
      }
    }
    if(is_array($data))
    {
      foreach($data as $k=>$v)
      {
        if(is_array($v))
        {
          foreach($v as $r)
          {
            $item = $this->dblink->createElement($k);
            $result = $this->setData($r,$item);
            $node->appendChild($result);
          }
        }
        else
        {
          $item = $this->dblink->createElement($k);
          $value = $this->dblink->createTextNode($v);
          $item->appendChild($value);
          $node->appendChild($item);
        }
      }
    }
    else
    {
      $item = $this->dblink->createTextNode($data);
      $node->appendChild($item);
    }
    if($is_root)
    {
      $this->dblink->save($this->dbfile);  // 覆蓋寫入
    }
    else
    {
      return $node;
    }
  }
}

簡單用法示例如下:

smp.xml文件:

?xml version="1.0" encoding="utf-8"?>
root>
   posts>
     id>1/id>
     title>標題一/title>
     content>詳細內容一/content>
   /posts>
   posts>
     id>2/id>
     title>標題二/title>
     content>詳細內容二/content>
   /posts>
   posts>
     id>3/id>
     title>標題三/title>
     content>詳細內容三/content>
   /posts>
/root>

index.php文件:

include("xml_dom.php");
$xml=new xml_dom("smp.xml");//載入xml文件
$xmlarr=$xml->getData();//讀取xml文件內容
var_dump($xmlarr);

運行結果:

array(1) {
 ["posts"]=>
 array(3) {
  [0]=>
  array(3) {
   ["id"]=>
   string(1) "1"
   ["title"]=>
   string(9) "標題一"
   ["content"]=>
   string(15) "詳細內容一"
  }
  [1]=>
  array(3) {
   ["id"]=>
   string(1) "2"
   ["title"]=>
   string(9) "標題二"
   ["content"]=>
   string(15) "詳細內容二"
  }
  [2]=>
  array(3) {
   ["id"]=>
   string(1) "3"
   ["title"]=>
   string(9) "標題三"
   ["content"]=>
   string(15) "詳細內容三"
  }
 }
}

PS:這里再為大家提供幾款關于xml操作的在線工具供大家參考使用:

在線XML/JSON互相轉換工具:
http://tools.jb51.net/code/xmljson

在線格式化XML/在線壓縮XML
http://tools.jb51.net/code/xmlformat

XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress

XML代碼在線格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP針對XML文件操作技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP錯誤與異常處理方法總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • php+Ajax處理xml與json格式數據的方法示例
  • PHP以json或xml格式返回請求數據的方法
  • php實現xml與json之間的相互轉換功能實例
  • PHP生成json和xml類型接口數據格式
  • PHP實現返回JSON和XML的類分享
  • php json與xml序列化/反序列化
  • php 備份數據庫代碼(生成word,excel,json,xml,sql)
  • PHP數組生成XML格式數據的封裝類實例
  • php封裝json通信接口詳解及實例
  • PHP封裝返回Ajax字符串和JSON數組的方法
  • PHP封裝XML和JSON格式數據接口操作示例

標簽:海南 佛山 六安 迪慶 定西 南寧 十堰 樂山

巨人網絡通訊聲明:本文標題《PHP封裝的XML簡單操作類完整實例》,本文關鍵詞  PHP,封,裝的,XML,簡單,操作,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP封裝的XML簡單操作類完整實例》相關的同類信息!
  • 本頁收集關于PHP封裝的XML簡單操作類完整實例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产成人av电影在线观看| 欧美性受极品xxxx喷水| 亚洲免费观看在线观看| 精品久久久久久无| 国产精品成人免费| 成人app下载| 一区二区三区国产精品| 色综合久久中文字幕综合网| 日本va欧美va瓶| 国产日本欧美一区二区| 日韩一本二本av| 日韩二区三区四区| 一区二区三区在线播放| 一区二区三区免费网站| 日韩专区中文字幕一区二区| 五月天丁香久久| 国精产品一区一区三区mba视频| 久久众筹精品私拍模特| 亚洲精品在线免费观看视频| 在线观看日韩国产| 欧美视频在线播放| 91免费视频网址| 欧美一个色资源| 26uuu欧美日本| 亚洲色图欧洲色图婷婷| 91丝袜美腿高跟国产极品老师| 国产激情精品久久久第一区二区| 国产a视频精品免费观看| 成人激情午夜影院| 欧美写真视频网站| 欧美大片一区二区| 亚洲伦在线观看| 午夜精品久久久久影视| 奇米影视一区二区三区小说| 91在线视频在线| 亚洲黄网站在线观看| 日本不卡一区二区三区 | 欧美日韩二区三区| 亚洲精品在线三区| 亚洲人亚洲人成电影网站色| 亚洲不卡一区二区三区| 成人丝袜18视频在线观看| 色综合天天性综合| 久久免费偷拍视频| 成人一区二区三区| 欧美日韩一区中文字幕| 国产精品福利av| 日本女优在线视频一区二区| 久久成人免费日本黄色| 午夜不卡av免费| 国产91高潮流白浆在线麻豆 | 欧美日本一区二区| 国产精品成人一区二区三区夜夜夜| 亚洲激情av在线| 成年人网站91| 日韩视频一区二区在线观看| 久久久久综合网| 久久精品噜噜噜成人av农村| 色婷婷综合激情| 亚洲色图欧洲色图| 国产精品中文有码| 欧美亚一区二区| 亚洲综合免费观看高清完整版在线| 久久av中文字幕片| 精品国产一区二区亚洲人成毛片| 一区二区久久久| 国产乱码精品一区二区三区av | 色综合久久中文字幕| 国产精品初高中害羞小美女文| 极品尤物av久久免费看| 欧美在线播放高清精品| 一区2区3区在线看| 94-欧美-setu| 亚洲男人电影天堂| 91香蕉视频污在线| 中文在线免费一区三区高中清不卡| 日韩一区国产二区欧美三区| 一级中文字幕一区二区| 亚洲欧美日韩人成在线播放| 91蝌蚪porny| 亚洲免费观看高清完整版在线观看熊| 91在线无精精品入口| 中文av字幕一区| 色诱视频网站一区| 亚洲另类一区二区| 91电影在线观看| 日韩av高清在线观看| 91.成人天堂一区| 国内久久精品视频| 久久综合久久综合久久| 五月综合激情网| 欧美成人bangbros| 国产激情视频一区二区在线观看| 国产精品全国免费观看高清| 成人免费毛片aaaaa**| 国产欧美日韩视频一区二区| 成人av网站大全| 亚洲人成7777| 欧美电影免费观看高清完整版在线观看| 日韩精品电影在线| 国产片一区二区三区| 99久久婷婷国产综合精品电影| 1000精品久久久久久久久| 国产一区二区中文字幕| 久久婷婷成人综合色| 色国产综合视频| 日韩电影在线一区二区三区| 日韩免费性生活视频播放| 国产91精品精华液一区二区三区| 中文字幕一区二区三区不卡| 这里只有精品电影| 国产精品一区三区| 欧美极品少妇xxxxⅹ高跟鞋 | 一区二区国产视频| 久久人人97超碰com| 91一区二区三区在线播放| 蜜桃av一区二区在线观看 | 欧洲视频一区二区| 午夜天堂影视香蕉久久| 国产欧美日韩久久| 欧美伊人久久久久久久久影院| 亚洲人亚洲人成电影网站色| 精品国产乱码久久久久久图片 | 一区二区三区免费| 国产欧美日韩在线视频| 欧美在线播放高清精品| 国产高清无密码一区二区三区| 亚洲va韩国va欧美va精品| 久久综合国产精品| 欧美成人三级在线| 色狠狠色狠狠综合| 免费在线观看精品| 亚洲高清中文字幕| 国产精品久久久久久久久免费桃花 | 亚洲一区二区不卡免费| 国产精品天美传媒| 日韩免费观看2025年上映的电影| 成人三级伦理片| 国产成人av一区二区三区在线| 亚洲成人av一区二区| 亚洲一区二区三区四区不卡| 国产欧美一区二区精品忘忧草| 2023国产精华国产精品| 欧美日韩国产另类一区| 国产精品麻豆网站| 国产精品嫩草影院av蜜臀| 日韩精品中文字幕一区二区三区| 欧美日韩大陆一区二区| eeuss影院一区二区三区 | 日韩美女视频一区二区| 欧美精品一区二区三区一线天视频 | 欧美最猛性xxxxx直播| 色婷婷香蕉在线一区二区| 成人一级片网址| 岛国一区二区在线观看| 99视频精品在线| 成人综合婷婷国产精品久久蜜臀| 国产成人一区在线| 国产精品中文欧美| 轻轻草成人在线| 日本大胆欧美人术艺术动态| 亚洲成a人片综合在线| 久久精品噜噜噜成人88aⅴ| 青娱乐精品视频| 国产一区二区三区观看| 国产福利精品导航| 99re6这里只有精品视频在线观看| av网站一区二区三区| 成人免费高清视频在线观看| 色婷婷激情综合| 欧美专区亚洲专区| 精品久久一区二区| 国产日韩欧美不卡在线| 亚洲综合色视频| 天堂午夜影视日韩欧美一区二区| 狠狠色丁香久久婷婷综合丁香| 国内精品视频一区二区三区八戒| 亚洲成人av在线电影| 免费观看一级特黄欧美大片| 精品亚洲aⅴ乱码一区二区三区| 成人综合激情网| 欧美亚洲动漫另类| 欧美国产一区二区在线观看 | 东方aⅴ免费观看久久av| 成人一区二区三区视频在线观看 | 久久久天堂av| 最新成人av在线| 久久97超碰色| 91麻豆视频网站| 欧美精品一区视频| 亚洲一区在线观看免费| 中文av一区特黄| 精品综合免费视频观看| 岛国av在线一区| 久久一夜天堂av一区二区三区| 国产欧美日本一区视频| 久久成人精品无人区| 91日韩一区二区三区| 欧美国产精品劲爆| 日韩在线一区二区三区|