php实现的XML操作(读取)封装类完整实例
本文实例讲述了php实现的XML操作(读取)封装类。分享给大家供大家参考,具体如下:
<?xmlversion="1.0"encoding="utf-8"standalone="no"?> <CustomizationSettingversion='1.0'> <!--各通用配置信息,作为Settings子节点,方便统一解析--> <!--AgentSettings由网页定制生成,默认无次节点--> <AgentSettings> <!--以Setting作为节点名,考虑扩展时,不需修改客户端接口。type类型方便网页进行显示控件区分--> <!--代理定制类型,默认:Normal。在网页区分语言定制的情况下,以英文、或列表第一种语言的修改为准--> <Settingname='CustomizeType'type='enum'>Normal|DR</Setting> <!--产品名称,AgentType为DR时,用于获取代理购买地址--> <Settingname='AppName'type='string'>WondershareVedioConvertor</Setting> <!--品牌名称,AgentType为DR时,用于获取代理购买地址--> <Settingname='Publisher'type='string'>Wondershare</Setting> <!--购买地址生成方式,默认:Customize,由网页生成,默认无次节点--> <Settingname='OrderPageGenType'type='enum'>Customize|Affiliate</Setting> <!--AffiliateID,OrderPageGenType为Affiliate才有效,默认为空值--> <Settingname='AID'type='string'>143724583</Setting> <!--启动Affiliat购买地址启用短链接,OrderPageGenType为Affiliate才有效,默认:0--> <Settingname='UseShortAffiliateOrderLink'type='bool'>0|1</Setting> <!--定制输出名称--> <Settingname='OutputFileName'type='string'><![CDATA[1464646.mac-transpod-lite_full879.dmg]]></Setting> </AgentSettings> <!--各语言定制信息,作为Languages子节点,方便统一解析,以及扩展--> <Languages> <!--语言名称,统一使用CBS后台语言数据规范--> <Languagename='English'> <Settings> <!--产品ID,多语言中可被定制--> <Settingname='PID'type='stirng'>11642</Setting> <!--支持弹出广告,默认:1,最终能否弹广告还取决于网站的设置,这里主要用于关闭的总控制--> <Settingname='EnabelAD'type='bool'>1|0</Setting> <!--支持升级,默认:1--> <Settingname='EnableUpdate'type='bool'>1|0</Setting> <!--CBS跳转链接类型,只对InstallJumpPage,UninstallJumpPage,RegisterJumpPage,UpdateJumpPage有效,默认:Jump--> <Settingname='CBSJumpType'type='enum'>Jump|Hide|Disable</Setting> <!--支持Tisp消息--> <Settingname='TipsEnable'type='bool'>1|0</Setting> <!--支持弹出产品目录推荐,默认:1--> <Settingname='EnableProductSuit'type='bool'>1|0</Setting> </Settings> <!--链接地址作为URLS子节点,方便统一解析--> <URLS> <!--不使用'**Page'直接作为节点名称,避免自定义地址的名称与XML节点名称规范冲突,如就数字开头,同时支持网页界面根据不同产品显示链接名称,而且扩展时,而不需修改客户端接口--> <!--购买地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <!--区分地址类型order,jump,comm,custom方便网页显示归类--> <URLname='OrderPage'type='order'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--安装跳转地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='InstallJumpPage'type='jump'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--卸载跳转地址,Mac产品无此项。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='UninstallJumpPage'type='jump'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--注册跳转地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='RegisterJumpPage'type='jump'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--升级跳转地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='UpdateJumpPage'type='jump'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--公司主页地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='HomePage'type='comm'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--产品主页地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='ProductPage'type='comm'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--支持地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='SupportPage'type='comm'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--联系客服地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='ContactPage'type='comm'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--在线帮助地址。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='HelpOnlinePage'type='comm'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--自定义地址,最多可定义5个。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='3DPage'type='custom'updateReserve='0|1'><![CDATA[http://...]]></URL> <!--自定义地址,最多可定义5个。属性updateReserve表示产品升级保留定制信息,默认:0,进入定制页面后,默认修改为1--> <URLname='GPUPage'type='custom'updateReserve='0|1'><![CDATA[http://...]]></URL> </URLS> <!--待扩展信息,在客户端接口中预先处理--> </Language> <!--产品不支持某种语言,则不需要该<Language>节点--> <Languagename='TraditionalChinese(HK)'> <!--同上--> </Language> <Languagename='Chinese'> <!--同上--> </Language> <Languagename='Portuguese'> <!--同上--> </Language> <Languagename='Japanese'> <!--同上--> </Language> <Languagename='Korean'> <!--同上--> </Language> <Languagename='Hebrew'> <!--同上--> </Language> <Languagename='Arabic'> <!--同上--> </Language> <Languagename='Spanish'> <!--同上--> </Language> <Languagename='Polish'> <!--同上--> </Language> <Languagename='German'> <!--同上--> </Language> <Languagename='French'> <!--同上--> </Language> <Languagename='Italian'> <!--同上--> </Language> <Languagename='Spanish(Spain)'> <!--同上--> </Language> <Languagename='Spanish(Mexico)'> <!--同上--> </Language> <Languagename='TraditionalChinese(TW)'> <!--同上--> </Language> <Languagename='Dutch'> <!--同上--> </Language> <Languagename='Russian'> <!--同上--> </Language> </Languages> </CustomizationSetting>
封装了下读取xml操作类:
<?php /** *xml操作基类 */ classXmlBase{ publicfunction__construct(){ } /** *加载xml *@paramstring$xmlxml路径或xml字符串 *@parambool$isXmlStr是否是xml字符串 */ protectedfunction_loadXml($xml,$isXmlStr=FALSE){ $xmlObj=newDOMDocument(); if($isXmlStr){ $xmlObj->loadXML($xmlNewStr); }else{ $xmlObj->load($xml); } return$xmlObj; } /** *获取某个标签节点 *@param$parentnode父节点 *@param$tagName标签名//不区分大小写 *@returnnode节点对象 */ protectedfunction_getNode($parentNode,$tagName){ $childNodes=$this->_getNodes($parentNode); foreach($childNodesas$node){ $nodeName=strtolower(trim($node->nodeName)); $tagName=strtolower(trim($tagName)); if($nodeName==$tagName){ return$node; } } returnNULL; } /** *获取xml子节点 *@param$parentNode父节点 *@param$tagName子节点标签//不区分大小写 */ protectedfunction_getNodes($parentNode,$tagName=''){ $nodes=array(); if($tagName){ $nodes=$this->_getSpecialNodes($parentNode,$tagName); }else{ $nodes=$this->_getAllNodes($parentNode); } return$nodes; } /** *获取所有的节点 *@param$parentNode父节点 */ protectedfunction_getAllNodes($parentNode){ $nodes=array(); foreach($parentNode->childNodesas$node){ if($node->nodeType==1){ $nodes[]=$node; } } return$nodes; } /** *获取指定标签的节点 *@param$parentNode父节点 *@param$tagName节点名称 */ protectedfunction_getSpecialNodes($parentNode,$tagName){ $nodes=array(); $tagName=strtolower(trim($tagName)); foreach($parentNode->childNodesas$node){ $nodeName=strtolower(trim($node->nodeName)); if($node->nodeType==1&&$nodeName==$tagName){ $nodes[]=$node; } } return$nodes; } /** *获取节点属性值 * *@param$node节点对象 *@param$attrName节点名字//不区分大小写 */ protectedfunction_getAttr($node,$attrName){ $attrName=strtolower($attrName); foreach($node->attributesas$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:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线