代码如下 | 复制代码 |
|
封装了下读取xml操作类:
代码如下 | 复制代码 |
/** * xml操作基类 */ classXmlBase { publicfunction__construct() { } /** * 加载xml * @param string $xml xml路径或xml字符串 * @param bool $isXmlStr 是否是xml字符串 */ protectedfunction_loadXml($xml,$isXmlStr= FALSE) { $xmlObj=newDOMDocument(); if($isXmlStr) { $xmlObj->loadXML($xmlNewStr); }else{ $xmlObj->load($xml); } return$xmlObj; } /** * 获取某个标签节点 * @param $parentnode 父节点 * @param $tagName 标签名 // 不区分大小写 * @return node 节点对象 */ 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''; } } ?> |