博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP使用DOMDocument 操作xml
阅读量:7135 次
发布时间:2019-06-28

本文共 4104 字,大约阅读时间需要 13 分钟。

1 
xmlName=$xmlName; 14 $this->rootKey = $rootKey; 15 16 if(!file_exists($this->xmlName)) 17 { 18 $this->doc = new DOMDocument('1.0', 'utf-8'); 19 $rootKey = $this->doc->createElement($this->rootKey);//create root key 20 $this->rootKey = $this->doc->appendChild($rootKey); 21 $this->doc->save($this->xmlName); 22 }else 23 { 24 $this->doc = new DOMDocument(); 25 $this->doc->load($xmlName); 26 27 } 28 29 $this->doc->formatOutput = true; 30 31 } 32 33 34 /* 35 创建子节点 36 @param $childNode :要创建的子节点及属性$child_attr_array=null; 37 @param $parentNode:要创建的子节点的父节点及属性 $parent_attr_array=null; 38 */ 39 public function createChildNode($childNode,$child_attr_array=null,$parentNode,$parent_attr_array=null) 40 { 41 $cnode = $this->doc->createElement($childNode); 42 43 //获取要添加的子节点的父节点 44 if($parent_attr_array!=null){ 45 foreach($parent_attr_array as $attr_key=>$attr_value) 46 { 47 $cnode = $this->getNodeByAttr($parentNode,$attr_key,$attr_value)->appendChild($cnode); 48 } 49 }else 50 { //避免创建父节点即:在父节点下创建子节点 51 $cnode = $this->doc->getElementsByTagName($parentNode)->item(0)->appendChild($cnode); 52 } 53 54 55 //设置子节点值 56 //$cnode->nodeValue=$chileNodeValue; 57 58 //设置属性 59 if($child_attr_array!=null) 60 { 61 foreach($child_attr_array as $attr_key=>$attr_value) 62 { 63 $cnode->setAttribute($attr_key,$attr_value); 64 } 65 } 66 67 68 69 } 70 71 /* 72 获取具有某属性的节点 73 @param 节点名$nodeName,及其属性和值$attrName,$attrValue 74 @return DOMNode 75 */ 76 public function getNodeByAttr($nodeName,$attrName,$attrValue) 77 { 78 $nodeList = $this->doc->getElementsByTagName($nodeName); 79 80 for($i=0; $i<$nodeList->length;$i++) 81 { 82 $attrList = $nodeList->item($i)->getAttributeNode($attrName); 83 if($attrList->value == $attrValue) 84 { 85 return $nodeList->item($i); 86 87 //echo 'okkkkkk'.'
';; 88 } 89 90 } 91 92 } 93 94 95 //删除具有某个属性的节点 96 public function delete_Node($nodeName,$attrName,$attrValue) 97 { 98 try 99 {100 $delete_Node = $this->getNodeByAttr($nodeName,$attrName,$attrValue);101 $delete_Node->parentNode->removeChild($delete_Node);102 103 }catch(DOMException $e)104 {105 echo 'fail!';106 }107 }108 109 110 //创建节点属性111 public function createNodeAttribute($nodeName,$attr,$aValue)112 {113 $nodes = $this->doc->getElementsByTagName($nodeName);114 for($i=0; $i<$nodes->length;$i++)115 {116 $nodeValue = $nodes->item($i)->nodeValue.'
';117 }118 119 //$node->item[0]->setAttribute($attr,$aValue);120 121 }122 123 /*124 保存xml125 */126 public function saveXml()127 {128 129 $this->doc->save($this -> xmlName);130 }131 132 133 134 135 136 }137 138 //实例操作139 $myXml = new xmlMessage("opera.xml","世界");//创建一个以"世界"为根节点的xml文件140 141 $myXml->createChildNode("国家",array('name'=>'中国','人口'=>'1亿'),'世界');142 143 $myXml->createChildNode("国家",array('name'=>'英国','人口'=>'50millon'),'世界');144 145 $myXml->createChildNode("山东",array('city'=>'济南','note'=>'省会'),'国家',array('name'=>'英国'));146 $myXml->createChildNode("浙江",'','国家',array('name'=>'英国'));147 148 //$myXml->createChildNode("历城",array('city'=>'济南','note'=>'区'),'山东');149 150 151 //$myXml->createNodeAttribute("国家","人口",125);152 153 //$myXml->getNodeByAttr("国家",'name','英国');154 //$myXml->delete_Node("历城",'city','济南');155 156 157 $myXml->saveXml();158 159 ?>

 

转载地址:http://mgdrl.baihongyu.com/

你可能感兴趣的文章
三个姑娘:NAS网络存储与SAN和DAS的区别
查看>>
对象级存储正准备替代企业中的NAS
查看>>
联想企业网盘助力中建六局装饰公司轻松管控项目全生命周期
查看>>
数字化转型时代,选择靠谱的合作伙伴很重要
查看>>
如何快速拼接一个私有云迁移战略
查看>>
HetNet/SON引领通向5G之路
查看>>
陌陌“时刻”增加时间属性 视频社交更立体全景
查看>>
浅谈金融大数据
查看>>
App 组件化/模块化之路——构建开发架构思路
查看>>
《Oracle高性能自动化运维》一一3.1 Redo功能用途
查看>>
《游戏设计师修炼之道:数据驱动的游戏设计》一2.2 漏洞产生过程
查看>>
企业部署OpenStack时常会遭遇的问题…
查看>>
烧钱买来的CDN营收,真的能换来云计算的未来吗?
查看>>
浅谈Java的Fork/Join并发框架
查看>>
8Manage项目精细化管理 提升华鉴工程检测效益
查看>>
参照Windows Insider模式:微软公布面向员工的Elite项目细节
查看>>
反向代理(Reverse Proxy)及 IIS 7 应用请求路由模块
查看>>
数据中心经济需要衡量能源安全
查看>>
直播视频为何对Facebook如此重要?
查看>>
工信部总工张峰对云计算发展提三点建议
查看>>