欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php實現(xiàn)的XML操作(讀取)封裝類完整實例

 更新時間:2017年02月23日 11:25:20   作者:52php  
這篇文章主要介紹了php實現(xiàn)的XML操作(讀取)封裝類,給出了xml格式文件示例,并結(jié)合完整實例形式分析了php遍歷讀取xml格式數(shù)據(jù)節(jié)點的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了php實現(xiàn)的XML操作(讀取)封裝類。分享給大家供大家參考,具體如下:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<CustomizationSetting version='1.0' >
  <!-- 各通用配置信息,作為Settings子節(jié)點,方便統(tǒng)一解析 -->
  <!-- AgentSettings 由網(wǎng)頁定制生成,默認無次節(jié)點-->
  <AgentSettings>
    <!-- 以Setting 作為節(jié)點名,考慮擴展時,不需修改客戶端接口。 type類型方便網(wǎng)頁進行顯示控件區(qū)分 -->
    <!-- 代理定制類型,默認:Normal。在網(wǎng)頁區(qū)分語言定制的情況下,以英文、或列表第一種語言的修改為準 -->
    <Setting name='CustomizeType' type='enum'>Normal|DR</Setting>
    <!-- 產(chǎn)品名稱,AgentType為DR時,用于獲取代理購買地址 -->
    <Setting name='AppName' type='string'>Wondershare Vedio Convertor</Setting>
    <!-- 品牌名稱,AgentType為DR時,用于獲取代理購買地址 -->
    <Setting name='Publisher' type='string'>Wondershare</Setting>
    <!-- 購買地址生成方式,默認:Customize,由網(wǎng)頁生成,默認無次節(jié)點 -->
    <Setting name='OrderPageGenType' type='enum'>Customize|Affiliate</Setting>
    <!-- Affiliate ID, OrderPageGenType為Affiliate才有效,默認為空值 -->
    <Setting name='AID' type='string'>143724583</Setting>
    <!-- 啟動Affiliat 購買地址啟用短鏈接, OrderPageGenType為Affiliate才有效,默認:0 -->
    <Setting name='UseShortAffiliateOrderLink' type='bool'>0|1</Setting>
    <!-- 定制輸出名稱 -->
    <Setting name='OutputFileName' type='string'><![CDATA[1464646.mac-transpod-lite_full879.dmg]]></Setting>
  </AgentSettings>
  <!-- 各語言定制信息,作為Languages子節(jié)點,方便統(tǒng)一解析, 以及擴展 -->
  <Languages>
    <!-- 語言名稱,統(tǒng)一使用CBS后臺語言數(shù)據(jù)規(guī)范 -->
    <Language name='English' >
      <Settings>
        <!-- 產(chǎn)品ID,多語言中可被定制 -->
        <Setting name='PID' type='stirng'>11642</Setting>
        <!-- 支持彈出廣告,默認:1,最終能否彈廣告還取決于網(wǎng)站的設(shè)置,這里主要用于關(guān)閉的總控制 -->
        <Setting name='EnabelAD' type='bool'>1|0</Setting>
        <!-- 支持升級,默認:1 -->
        <Setting name='EnableUpdate' type='bool'>1|0</Setting>
        <!-- CBS跳轉(zhuǎn)鏈接類型,只對InstallJumpPage,UninstallJumpPage,RegisterJumpPage,UpdateJumpPage有效,默認:Jump -->
        <Setting name='CBSJumpType' type='enum'>Jump|Hide|Disable</Setting>
        <!-- 支持Tisp消息-->
        <Setting name='TipsEnable' type='bool'>1|0</Setting>
        <!-- 支持彈出產(chǎn)品目錄推薦, 默認:1-->
        <Setting name='EnableProductSuit' type='bool'>1|0</Setting>
      </Settings>
      <!-- 鏈接地址作為URLS子節(jié)點,方便統(tǒng)一解析 -->
      <URLS>
        <!-- 不使用'**Page'直接作為節(jié)點名稱,避免自定義地址的名稱與XML節(jié)點名稱規(guī)范沖突,如就數(shù)字開頭,同時支持網(wǎng)頁界面根據(jù)不同產(chǎn)品顯示鏈接名稱,而且擴展時,而不需修改客戶端接口 -->
        <!-- 購買地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <!-- 區(qū)分地址類型order, jump, comm, custom方便網(wǎng)頁顯示歸類 -->
        <URL name='OrderPage' type='order' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 安裝跳轉(zhuǎn)地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='InstallJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 卸載跳轉(zhuǎn)地址,Mac產(chǎn)品無此項。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='UninstallJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 注冊跳轉(zhuǎn)地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='RegisterJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 升級跳轉(zhuǎn)地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='UpdateJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 公司主頁地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='HomePage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 產(chǎn)品主頁地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='ProductPage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 支持地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='SupportPage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 聯(lián)系客服地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='ContactPage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 在線幫助地址。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='HelpOnlinePage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 自定義地址,最多可定義5個。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='3DPage' type='custom' updateReserve='0|1'><![CDATA[http://...]]></URL>
        <!-- 自定義地址,最多可定義5個。屬性updateReserve表示產(chǎn)品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
        <URL name='GPUPage' type='custom' updateReserve='0|1'><![CDATA[http://...]]></URL>
      </URLS>
      <!-- 待擴展信息,在客戶端接口中預(yù)先處理 -->
    </Language>
    <!-- 產(chǎn)品不支持某種語言,則不需要該<Language>節(jié)點 -->
    <Language name='Traditional Chinese(HK)'>
        <!-- 同上 -->
    </Language>
    <Language name='Chinese'>
        <!-- 同上 -->
    </Language>
    <Language name='Portuguese'>
        <!-- 同上 -->
    </Language>
    <Language name='Japanese'>
        <!-- 同上 -->
    </Language>
    <Language name='Korean'>
        <!-- 同上 -->
    </Language>
    <Language name='Hebrew'>
        <!-- 同上 -->
    </Language>
    <Language name='Arabic'>
        <!-- 同上 -->
    </Language>
    <Language name='Spanish'>
        <!-- 同上 -->
    </Language>
    <Language name='Polish'>
        <!-- 同上 -->
    </Language>
    <Language name='German'>
        <!-- 同上 -->
    </Language>
    <Language name='French'>
        <!-- 同上 -->
    </Language>
    <Language name='Italian'>
        <!-- 同上 -->
    </Language>
    <Language name='Spanish(Spain)'>
        <!-- 同上 -->
    </Language>
    <Language name='Spanish(Mexico)'>
        <!-- 同上 -->
    </Language>
    <Language name='Traditional Chinese(TW)'>
        <!-- 同上 -->
    </Language>
    <Language name='Dutch'>
        <!-- 同上 -->
    </Language>
    <Language name='Russian'>
        <!-- 同上 -->
    </Language>
  </Languages>
</CustomizationSetting>

封裝了下讀取xml操作類:

<?php
/**
 * xml操作基類
 */
class XmlBase {
  public function __construct() {
  }
  /**
   * 加載xml
   * @param string $xml xml路徑或xml字符串
   * @param bool $isXmlStr 是否是xml字符串
   */
  protected function _loadXml($xml, $isXmlStr = FALSE) {
    $xmlObj = new DOMDocument();
    if ($isXmlStr) {
      $xmlObj->loadXML($xmlNewStr);
    } else {
      $xmlObj->load($xml);
    }
    return $xmlObj;
  }
  /**
   * 獲取某個標簽節(jié)點
   * @param $parentnode 父節(jié)點
   * @param $tagName 標簽名 // 不區(qū)分大小寫
   * @return node 節(jié)點對象
   */
  protected function _getNode($parentNode, $tagName) {
    $childNodes = $this->_getNodes($parentNode);
    foreach ($childNodes as $node) {
      $nodeName = strtolower(trim($node->nodeName));
      $tagName = strtolower(trim($tagName));
      if ($nodeName == $tagName) {
        return $node;
      }
    }
    return NULL;
  }
  /**
   * 獲取xml子節(jié)點
   * @param $parentNode 父節(jié)點
   * @param $tagName 子節(jié)點標簽 // 不區(qū)分大小寫
   */
  protected function _getNodes($parentNode, $tagName = '') {
    $nodes = array();
    if ($tagName) {
      $nodes = $this->_getSpecialNodes($parentNode, $tagName);
    } else {
      $nodes = $this->_getAllNodes($parentNode);
    }
    return $nodes;
  }
  /**
   * 獲取所有的節(jié)點
   * @param $parentNode 父節(jié)點
   */
  protected function _getAllNodes($parentNode) {
    $nodes = array();
    foreach ($parentNode->childNodes as $node) {
      if ($node->nodeType == 1) {
        $nodes[] = $node;
      }
    }
    return $nodes;
  }
  /**
   * 獲取指定標簽的節(jié)點
   * @param $parentNode 父節(jié)點
   * @param $tagName 節(jié)點名稱
   */
  protected function _getSpecialNodes($parentNode, $tagName) {
    $nodes = array();
    $tagName = strtolower(trim($tagName));
    foreach ($parentNode->childNodes as $node) {
      $nodeName = strtolower(trim($node->nodeName));
      if ($node->nodeType == 1 && $nodeName == $tagName) {
        $nodes[] = $node;
      }
    }
    return $nodes;
  }
  /**
   * 獲取節(jié)點屬性值
   *
   * @param $node 節(jié)點對象
   * @param $attrName 節(jié)點名字 // 不區(qū)分大小寫
   */
  protected function _getAttr($node, $attrName) {
    $attrName = strtolower($attrName);
    foreach ($node->attributes as $attr) {
      $nodeName = strtolower($attr->nodeName);
      //$nodeValue = strtolower($attr->nodeValue);
      $nodeType = strtolower($attr->nodeType);
      if ($nodeType == 2 && $nodeName == $attrName) {
        unset($attrName, $nodeName, $nodeType);
        return $attr->nodeValue;
      }
    }
    return '';
  }
}
?>

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

在線XML/JSON互相轉(zhuǎn)換工具:
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

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP針對XML文件操作技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP錯誤與異常處理方法總結(jié)》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

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

相關(guān)文章

最新評論