亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

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

2024-05-05 00:01:03
字體:
來源:轉載
供稿:網友

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

xml_dom.php封裝類文件:

<?php/** * Class xml_dom *nodeType:1 XML_ELEMENT_NODE(元素類型)2 XML_ATTRIBUTE_NODE3 XML_TEXT_NODE4 XML_CDATA_SECTION_NODE5 XML_ENTITY_REFERENCE_NODE6 XML_ENTITY_NODE7 XML_PROCESSING_INSTRUCTION_NODE8 XML_COMMENT_NODE(注釋類型)9 XML_DOCUMENT_NODE10 XML_DOCUMENT_TYPE_NODE11 XML_DOCUMENT_FRAGMENT_NODE12 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) "詳細內容三"  } }}

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久久不卡| 最好看的2019年中文视频| 深夜福利91大全| 国产a∨精品一区二区三区不卡| 91精品久久久久久久久久| xvideos亚洲人网站| 成人av色在线观看| 91免费在线视频网站| 国产精品嫩草影院一区二区| 欧美一区亚洲一区| 色七七影院综合| 欧洲美女7788成人免费视频| 久久综合亚洲社区| 国产中文字幕91| 国产91露脸中文字幕在线| 欧美午夜女人视频在线| 国产视频精品免费播放| 精品国产999| 欧美大片大片在线播放| 欧美激情xxxxx| 久久精品中文字幕电影| 国产剧情日韩欧美| 性色av一区二区三区| 欧美在线观看日本一区| 欧美激情小视频| 成人av.网址在线网站| 日韩av大片在线| 日韩欧美在线观看视频| 欧美巨乳美女视频| 久久久亚洲国产| 亚洲精品第一国产综合精品| 国产日韩欧美在线视频观看| 久久久久久久999精品视频| 粉嫩老牛aⅴ一区二区三区| 日本高清视频精品| 日韩精品亚洲视频| 精品久久在线播放| 91高清视频在线免费观看| 国产精品视频内| 国产成人97精品免费看片| 一区三区二区视频| 亚洲午夜国产成人av电影男同| 日韩免费在线视频| 国产欧美一区二区三区视频| 国产日韩在线亚洲字幕中文| 日韩欧美中文第一页| 91精品一区二区| 91九色在线视频| 国产精品视频网址| 欧美一级视频在线观看| 国产狼人综合免费视频| 欧洲精品久久久| 欧美高清videos高潮hd| 日韩免费在线视频| 在线观看免费高清视频97| 色老头一区二区三区在线观看| 中文综合在线观看| 热久久99这里有精品| 成人一区二区电影| 欧美成在线观看| 成人有码在线播放| 中文字幕久久久| 欧美日韩精品国产| 国产日韩欧美91| 欧美激情在线狂野欧美精品| 97人人爽人人喊人人模波多| 在线看欧美日韩| 亚洲日本欧美日韩高观看| 2019中文字幕全在线观看| 日韩中文在线中文网在线观看| 国产亚洲xxx| 亚洲精品久久久一区二区三区| 国产精品欧美风情| 久久久亚洲国产天美传媒修理工| 国产免费一区二区三区香蕉精| 伊人亚洲福利一区二区三区| 中文字幕欧美日韩精品| 日韩免费av在线| 免费av一区二区| 久久在精品线影院精品国产| 欧美国产日韩视频| 在线播放国产一区二区三区| 亚洲国产高清高潮精品美女| 国产精品久久久久久久av电影| 97国产成人精品视频| 精品日本美女福利在线观看| 97色在线观看免费视频| 日韩视频免费看| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲精品少妇网址| 97成人精品区在线播放| 成人在线观看视频网站| 欧美日本中文字幕| 欧美久久精品一级黑人c片| 欧美性生交大片免费| 69影院欧美专区视频| 欧美另类极品videosbest最新版本| 欧美xxxx14xxxxx性爽| 成人动漫网站在线观看| 日韩精品极品在线观看| 欧美黑人一区二区三区| 国产成人亚洲综合青青| 欧美中文字幕视频| 国产v综合v亚洲欧美久久| 国产亚洲精品91在线| 日韩免费看的电影电视剧大全| 亚洲视频在线观看视频| 精品视频久久久久久久| 一本色道久久88亚洲综合88| 亚洲国产成人精品女人久久久| 色噜噜久久综合伊人一本| 亚洲无限乱码一二三四麻| 欧美乱大交做爰xxxⅹ性3| 亚洲美女动态图120秒| 亚洲影院色无极综合| 性夜试看影院91社区| 精品国产欧美成人夜夜嗨| 色婷婷久久一区二区| 91在线无精精品一区二区| 亚洲二区中文字幕| 色偷偷av一区二区三区乱| 亚洲精品综合精品自拍| 欧美成人精品不卡视频在线观看| 欧美精品videosex牲欧美| 美女久久久久久久久久久| 日韩视频在线免费| 国产欧美一区二区白浆黑人| 色悠久久久久综合先锋影音下载| 国产精品色午夜在线观看| 国产大片精品免费永久看nba| 色一情一乱一区二区| 日本高清久久天堂| 国产精品三级在线| 国产精品网站大全| 国产日韩欧美夫妻视频在线观看| 亚洲va欧美va国产综合剧情| 欧美黑人xxxⅹ高潮交| 日产精品久久久一区二区福利| 色av中文字幕一区| 欧美精品久久久久久久久| 欧美小视频在线| 亚洲aa在线观看| 日本免费一区二区三区视频观看| 91亚洲国产成人久久精品网站| 国产精品主播视频| 在线播放国产精品| 欧美午夜激情视频| 久久精品精品电影网| 欧美另类精品xxxx孕妇| 欧美精品激情blacked18| 丝袜情趣国产精品| 亚洲天堂av在线播放| 久久久久久欧美| 中文字幕日韩欧美精品在线观看| 性欧美视频videos6一9| 亚洲欧洲黄色网| 午夜免费在线观看精品视频| 欧美激情一区二区久久久| 国产精品极品美女粉嫩高清在线| 欧美激情国产日韩精品一区18| 欧美不卡视频一区发布| 在线观看不卡av| 亚洲精品永久免费精品| 欧美精品成人91久久久久久久|