本文執行個體講述了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 ''; }}?>