php实现的XML操作(读取)封装类完整实例
发布时间 - 2026-01-10 23:14:36 点击率:次本文实例讲述了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://...]]></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操作类:
<?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 '';
}
}
?>
PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线XML/JSON互相转换工具:
http://tools./code/xmljson
在线格式化XML/在线压缩XML:
http://tools./code/xmlformat
XML在线压缩/格式化工具:
http://tools./code/xml_format_compress
XML代码在线格式化美化工具:
http://tools./code/xmlcodeformat
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP针对XML文件操作技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# php
# XML
# 操作
# 读取
# 封装类
# PHP XML操作类DOMDocument
# php实现的xml操作类
# PHP实现的XML操作类【XML Library】
# PHP数组生成XML格式数据的封装类实例
# php中Array2xml类实现数组转化成XML实例
# php中使用DOM类读取XML文件的实现代码
# PHP操作XML作为数据库的类
# 自定义php类(查找/修改)xml文档
# PHP实现XML与数据格式进行转换类实例
# PHP封装的XML简单操作类完整实例
# 跳转
# 自定义
# 最多
# 操作技巧
# 弹出
# 程序设计
# 主页地址
# 客户端
# 相关内容
# 不需要
# 客服
# 感兴趣
# 英文
# 给大家
# 不支持
# 不需
# 此项
# 更多关于
# 主要用于
# 装了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
香港服务器租用每月最低只需15元?
文字头像制作网站推荐软件,醒图能自动配文字吗?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
怎么用AI帮你设计一套个性化的手机App图标?
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
如何在企业微信快速生成手机电脑官网?
如何快速上传建站程序避免常见错误?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
使用Dockerfile构建java web环境
微信小程序 闭包写法详细介绍
如何在IIS中新建站点并配置端口与物理路径?
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
JavaScript如何实现音频处理_Web Audio API如何工作?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
油猴 教程,油猴搜脚本为什么会网页无法显示?
网站优化排名时,需要考虑哪些问题呢?
三星、SK海力士获美批准:可向中国出口芯片制造设备
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
JS中对数组元素进行增删改移的方法总结
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
如何在搬瓦工VPS快速搭建网站?
5种Android数据存储方式汇总
Laravel如何处理表单验证?(Requests代码示例)
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
长沙企业网站制作哪家好,长沙水业集团官方网站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
香港服务器部署网站为何提示未备案?
javascript读取文本节点方法小结
如何在香港服务器上快速搭建免备案网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何在Tomcat中配置并部署网站项目?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
JS弹性运动实现方法分析
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
PythonWeb开发入门教程_Flask快速构建Web应用
高端智能建站公司优选:品牌定制与SEO优化一站式服务
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
如何快速上传自定义模板至建站之星?
原生JS获取元素集合的子元素宽度实例
Android自定义控件实现温度旋转按钮效果
Laravel如何优化应用性能?(缓存和优化命令)
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
网站制作壁纸教程视频,电脑壁纸网站?
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
如何在阿里云通过域名搭建网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
魔方云NAT建站如何实现端口转发?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】

