本文实例讲述了php实现的XML操作(读取)封装类。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
<? 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 > |
封装了下读取xml操作类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<?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程序设计有所帮助。