婷婷综合国产,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
    中文字幕+乱码+中文字幕一区| 国产欧美日韩在线| 久久99精品国产麻豆婷婷| 久久精品一区蜜桃臀影院| 欧日韩精品视频| 国产精品一区在线| 日韩av电影免费观看高清完整版在线观看| 国产精品色一区二区三区| 精品少妇一区二区三区免费观看| 91国产精品成人| 成人爽a毛片一区二区免费| 蜜桃精品视频在线| 婷婷激情综合网| 一区二区在线观看不卡| 中文子幕无线码一区tr| 日韩精品一区二区三区视频播放| 欧美视频自拍偷拍| 91浏览器打开| 91在线国内视频| 国产成人自拍高清视频在线免费播放| 青青草原综合久久大伊人精品优势| 亚洲乱码国产乱码精品精小说| 欧美精彩视频一区二区三区| 欧美大片顶级少妇| 在线播放亚洲一区| 欧美男女性生活在线直播观看 | 国产·精品毛片| 精品一区二区久久久| 日韩激情在线观看| 首页亚洲欧美制服丝腿| 亚洲一级片在线观看| 亚洲最新在线观看| 亚洲国产你懂的| 午夜精品国产更新| 亚洲成人免费视频| 午夜视黄欧洲亚洲| 美女脱光内衣内裤视频久久网站| 日韩av在线播放中文字幕| 日本一区中文字幕| 韩国一区二区视频| 国产suv一区二区三区88区| 国产+成+人+亚洲欧洲自线| 成人黄色a**站在线观看| 成人av在线播放网站| 成人午夜免费av| 一本久道中文字幕精品亚洲嫩| 色一区在线观看| 欧美视频一二三区| 欧美一区二区三区免费在线看 | 91色在线porny| 色哟哟一区二区三区| 欧美在线小视频| 91精品国产综合久久香蕉麻豆| 欧美精品在线视频| 欧美sm极限捆绑bd| 国产欧美日韩精品一区| 中文字幕亚洲一区二区va在线| 中文字幕日韩精品一区| 一区二区三区四区在线| 日本欧美一区二区| 国产成人精品免费在线| 在线观看欧美日本| 久久综合久久综合久久综合| 中文字幕在线视频一区| 一区二区三区精密机械公司| 日本中文字幕一区二区视频| 丁香婷婷综合色啪| 欧美三级日本三级少妇99| 日韩精品一区二区三区视频播放 | 一本色道综合亚洲| 欧美精品日韩精品| 久久精品视频一区| 亚洲精品福利视频网站| 蜜桃免费网站一区二区三区| av资源站一区| 91精品在线观看入口| 欧美国产精品v| 午夜国产精品一区| 国产成人免费视频网站| 欧美日韩亚洲综合在线| 久久久99久久精品欧美| 亚洲小说欧美激情另类| 国产成人午夜电影网| 欧美色涩在线第一页| 国产日韩高清在线| 日韩电影在线观看电影| 成人精品一区二区三区四区| 6080午夜不卡| 亚洲精品国久久99热| 精品写真视频在线观看| 在线观看日韩一区| 国产视频在线观看一区二区三区| 亚洲成人综合网站| 99这里只有久久精品视频| 欧美一区二区三区小说| 亚洲精品视频在线观看免费| 国产aⅴ综合色| 精品久久久久久久人人人人传媒| 有码一区二区三区| 成人av网站在线观看免费| 日韩免费高清视频| 日韩国产一区二| 一本色道久久综合精品竹菊| 久久精品人人爽人人爽| 麻豆精品一二三| 欧美视频三区在线播放| 亚洲欧洲成人自拍| 丁香网亚洲国际| 国产午夜精品一区二区三区嫩草| 美女脱光内衣内裤视频久久网站| 欧美日韩一区二区在线观看 | 亚洲女同ⅹxx女同tv| 国产精品88av| 国产亚洲一二三区| 国产一区二区三区蝌蚪| 精品卡一卡二卡三卡四在线| 奇米精品一区二区三区在线观看一 | 久久精品人人做人人爽97| 琪琪一区二区三区| 69成人精品免费视频| 亚洲国产精品麻豆| 欧美性猛片xxxx免费看久爱| 日韩美女啊v在线免费观看| 波多野结衣中文一区| 国产欧美日韩亚州综合| 精品一区二区三区免费播放| 91精品国产高清一区二区三区| 亚洲国产aⅴ天堂久久| 欧美色涩在线第一页| 香蕉成人伊视频在线观看| 欧美视频中文字幕| 五月天一区二区| 欧美日韩精品电影| 日韩成人伦理电影在线观看| 欧美福利视频导航| 另类的小说在线视频另类成人小视频在线 | 精品88久久久久88久久久| 韩国av一区二区三区四区 | 国产精品国产三级国产a| 国产成人亚洲综合a∨猫咪| 国产日韩欧美精品在线| 成人久久视频在线观看| 国产精品久久久久久福利一牛影视| 成年人网站91| 一区二区三区日本| 欧美日韩的一区二区| 日本不卡视频在线| 精品动漫一区二区三区在线观看| 国内精品免费在线观看| 国产精品理论在线观看| 一本色道久久综合精品竹菊| 亚洲一区二区三区四区五区黄| 欧美精三区欧美精三区| 麻豆视频一区二区| 国产精品你懂的在线| 日本精品裸体写真集在线观看 | 五月婷婷色综合| 欧美成人精品1314www| 国产精品一二三四| 亚洲人成伊人成综合网小说| 欧美色图免费看| 国内一区二区在线| 亚洲日本在线观看| 日韩三级伦理片妻子的秘密按摩| 国产91精品一区二区麻豆亚洲| 亚洲黄色小说网站| 日韩一区二区中文字幕| 成人免费观看男女羞羞视频| 一区二区三区四区在线播放| 欧美大片一区二区| av成人免费在线观看| 日本欧美韩国一区三区| 国产精品九色蝌蚪自拍| 精品视频在线视频| 国产a久久麻豆| 日本中文字幕一区二区视频| 国产精品理论片在线观看| 欧美精品一卡两卡| 成人av电影在线| 日韩av电影一区| 亚洲视频一区二区在线观看| 91精品国产91久久久久久最新毛片 | 国产一区二区在线电影| 成人欧美一区二区三区视频网页 | 亚洲精品v日韩精品| 精品1区2区在线观看| 欧美性色综合网| 成人性生交大片免费看在线播放| 日韩国产高清影视| 一区二区在线观看免费视频播放| 久久尤物电影视频在线观看| 欧美亚洲免费在线一区| 成人亚洲精品久久久久软件| 免费人成在线不卡| 亚洲男人的天堂av| 国产亚洲一区二区三区四区| 91精品福利在线一区二区三区 | 国产精品视频免费| 欧美电影精品一区二区| 欧美日韩在线播|