本文实例讲述了php实现的XML操作(读取)封装类。分享给大家供大家参考,具体如下:
封装了下读取xml操作类:
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
在线压缩/格式化工具:XML
代码在线格式化美化工具:更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。