php的XML操作(讀取)封裝類執行個體

來源:互聯網
上載者:User
本文執行個體講述了php實現的XML操作(讀取)封裝類。分享給大家供大家參考,具體如下:

<?xml version="1.0" encoding="utf-8" standalone="no"?><CustomizationSetting version='1.0' >  <!-- 各通用配置資訊,作為Settings子節點,方便統一解析 -->  <!-- AgentSettings 由網頁定製產生,預設無次節點-->  <AgentSettings>    <!-- 以Setting 作為節點名,考慮擴充時,不需修改用戶端介面。 type類型方便網頁進行顯示控制項區分 -->    <!-- 代理定製類型,預設:Normal。在網頁區分語言定製的情況下,以英文、或列表第一種語言的修改為準 -->    <Setting name='CustomizeType' type='enum'>Normal|DR</Setting>    <!-- 產品名稱,AgentType為DR時,用於擷取代理購買地址 -->    <Setting name='AppName' type='string'>Wondershare Vedio Convertor</Setting>    <!-- 品牌名稱,AgentType為DR時,用於擷取代理購買地址 -->    <Setting name='Publisher' type='string'>Wondershare</Setting>    <!-- 購買地址產生方式,預設:Customize,由網頁產生,預設無次節點 -->    <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子節點,方便統一解析, 以及擴充 -->  <Languages>    <!-- 語言名稱,統一使用CBS後台語言資料規範 -->    <Language name='English' >      <Settings>        <!-- 產品ID,多語言中可被定製 -->        <Setting name='PID' type='stirng'>11642</Setting>        <!-- 支援彈出廣告,預設:1,最終能否彈廣告還取決於網站的設定,這裡主要用於關閉的總控制 -->        <Setting name='EnabelAD' type='bool'>1|0</Setting>        <!-- 支援升級,預設:1 -->        <Setting name='EnableUpdate' type='bool'>1|0</Setting>        <!-- CBS跳轉連結類型,只對InstallJumpPage,UninstallJumpPage,RegisterJumpPage,UpdateJumpPage有效,預設:Jump -->        <Setting name='CBSJumpType' type='enum'>Jump|Hide|Disable</Setting>        <!-- 支援Tisp訊息-->        <Setting name='TipsEnable' type='bool'>1|0</Setting>        <!-- 支援彈出產品目錄推薦, 預設:1-->        <Setting name='EnableProductSuit' type='bool'>1|0</Setting>      </Settings>      <!-- 連結地址作為URLS子節點,方便統一解析 -->      <URLS>        <!-- 不使用'**Page'直接作為節點名稱,避免自訂地址的名稱與XML節點名稱規範衝突,如就數字開頭,同時支援網頁介面根據不同產品顯示連結名稱,而且擴充時,而不需修改用戶端介面 -->        <!-- 購買地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <!-- 區分地址類型order, jump, comm, custom方便網頁顯示歸類 -->        <URL name='OrderPage' type='order' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 安裝跳轉地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='InstallJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 卸載跳轉地址,Mac產品無此項。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='UninstallJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 註冊跳轉地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='RegisterJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 升級跳轉地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='UpdateJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 公司首頁地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='HomePage' type='comm' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 產品首頁地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='ProductPage' type='comm' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 支援地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='SupportPage' type='comm' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 聯絡客服地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='ContactPage' type='comm' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 線上協助地址。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='HelpOnlinePage' type='comm' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 自訂地址,最多可定義5個。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='3DPage' type='custom' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>        <!-- 自訂地址,最多可定義5個。屬性updateReserve表示產品升級保留定製資訊,預設:0, 進入定製頁面後,預設修改為1 -->        <URL name='GPUPage' type='custom' updateReserve='0|1'><![CDATA[http://www.php.cn/]]></URL>      </URLS>      <!-- 待擴充資訊,在用戶端介面中預先處理 -->    </Language>    <!-- 產品不支援某種語言,則不需要該<Language>節點 -->    <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;  }  /**   * 擷取某個標籤節點   * @param $parentnode 父節點   * @param $tagName 標籤名 // 不區分大小寫   * @return node 節點對象   */  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子節點   * @param $parentNode 父節點   * @param $tagName 子節點標籤 // 不區分大小寫   */  protected function _getNodes($parentNode, $tagName = '') {    $nodes = array();    if ($tagName) {      $nodes = $this->_getSpecialNodes($parentNode, $tagName);    } else {      $nodes = $this->_getAllNodes($parentNode);    }    return $nodes;  }  /**   * 擷取所有的節點   * @param $parentNode 父節點   */  protected function _getAllNodes($parentNode) {    $nodes = array();    foreach ($parentNode->childNodes as $node) {      if ($node->nodeType == 1) {        $nodes[] = $node;      }    }    return $nodes;  }  /**   * 擷取指定標籤的節點   * @param $parentNode 父節點   * @param $tagName 節點名稱   */  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;  }  /**   * 擷取節點屬性值   *   * @param $node 節點對象   * @param $attrName 節點名字 // 不區分大小寫   */  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 '';  }}?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.