溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用php怎么編寫一個XML操作類

發(fā)布時間:2021-02-13 16:16:12 來源:億速云 閱讀:166 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了利用php怎么編寫一個XML操作類,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

具體如下:

<?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>
      <!-- 待擴展信息,在客戶端接口中預先處理 -->
    </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 '';
  }
}
?>

上述內(nèi)容就是利用php怎么編寫一個XML操作類,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI