《PHP教程:php實現的XML操作(讀取)封裝類完整實例》要點:
本文介紹了PHP教程:php實現的XML操作(讀取)封裝類完整實例,希望對您有用。如果有疑問,可以聯系我們。
PHP應用本文實例講述了php實現的XML操作(讀取)封裝類.分享給大家供大家參考,具體如下:
PHP應用
<?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://...]]></URL>
<!-- 安裝跳轉地址.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='InstallJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 卸載跳轉地址,Mac產品無此項.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='UninstallJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 注冊跳轉地址.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='RegisterJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 升級跳轉地址.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='UpdateJumpPage' type='jump' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 公司主頁地址.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='HomePage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 產品主頁地址.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='ProductPage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 支持地址.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='SupportPage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 聯系客服地址.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='ContactPage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 在線幫助地址.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='HelpOnlinePage' type='comm' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 自定義地址,最多可定義5個.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='3DPage' type='custom' updateReserve='0|1'><![CDATA[http://...]]></URL>
<!-- 自定義地址,最多可定義5個.屬性updateReserve表示產品升級保留定制信息,默認:0, 進入定制頁面后,默認修改為1 -->
<URL name='GPUPage' type='custom' updateReserve='0|1'><![CDATA[http://...]]></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>
PHP應用封裝了下讀取xml操作類:
PHP應用
<?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 '';
}
}
?>
PHP應用PS:這里再為大家提供幾款關于xml操作的在線工具供大家參考使用:
PHP應用在線XML/JSON互相轉換工具:
http://tools.jb51.net/code/xmljson
PHP應用在線格式化XML/在線壓縮XML:
http://tools.jb51.net/code/xmlformat
PHP應用XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress
PHP應用XML代碼在線格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat
PHP應用更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP針對XML文件操作技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP錯誤與異常處理方法總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
PHP應用希望本文所述對大家PHP程序設計有所幫助.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1696.html