博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML操作类
阅读量:6859 次
发布时间:2019-06-26

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

/** * nodename :选取所有子节点 * /		:从根节点选取 * //		:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 * . 		:选取当前节点 * ..		:选取当前节点的父节点 * @		:选取属性 * *  * //book 	:选取所有book子元素 * //title[@lang='eng']		:选取所有title元素,且这些元素拥有值为eng的lang属性 * //book[price>35.00]		:选取所有book元素,且其price元素的值需大于35.00 */

 

 

 

class XML{	private $dom;    private $xmlfile;	private $xpath;    	/**     * @brief 构造函数     * @param string $xmlfile xml文件名 如果文件名不填写[即为空],则保存时必需填写文件名。     * @param string $encoding 文件的编码格式,默认为UTF-8编码     */	public function __construct($params = array()){		$keys = array_keys($params);		if(!in_array('encoding',$keys)){			$params['encoding'] = "utf-8";		}		$this->dom=new DOMDocument('1.0');		$this->rootNode = $this->dom->appendChild($this->dom->createElement($params['rootNode']));		$this->dom->formatOutput=true;		$this->dom->encoding = $params['encoding'];        if(in_array('xmlfile',$keys) && $params['xmlfile']!='' && strtolower(substr($params['xmlfile'],-4))=='.xml'){			$this->xmlfile = $params['xmlfile'];		}		$this->xpath=new DOMXpath($this->dom);	}	    /**     * @brief 查询节点函数     * @param string $query xpath查询字符串     * @return mixed 查询成功返回节点,失败返回false;     */	public function query($query)	{		$element = $this->xpath->query($query);		if($element->length>0){			return $element;		}else{			return false;		}	}				public function setStylesheet($value)	{		$this->dom->appendChild($this->dom->createProcessingInstruction('xml-stylesheet', 'href="'.$value.'" type="text/xsl"'));	}	/**     * @brief 添加节点	 * @param string $query xpath查询字符串	 * @param string $name 节点名称	 * @param string $value 节点值	 * @param string $attrs 属性值,可以设置多个属性,如:name=web;age=12;class=高二	 * @return bool 成功返回true,失败返回false	 */	public function addNode($query, $name, $value="", $attrs=""){		$target_node=$this->query($query);		if(is_string($name)){			if($target_node){				$value = str_replace(					array('>','<','&'),					array('>','<','&'),					$value				);				$node=$this->dom->createElement($name,$value);				if($attrs!=""){					$tems=explode(";",$attrs);					if(count($tems)>0){						for($i=0;$i
setAttribute($tem[0],$tem[1]); } } } $target_node->item(0)->appendChild($node); return true; } else { return false; } }else{ $target_node->item(0)->appendChild($name); } } /** * @brief 给节点添加属性 * @param string $query xpath查询字符串 * @param string $name 属性名称 * @param string $value 属性值 * @return bool 成功返回true,失败返回false */ public function addAttr($query, $name, $value) { $node=$this->query($query); if($node) { for($i=0; $i<$node->length; $i++) $node->item($i)->setAttribute($name,$value); return true; } else { return false; } } /** * @brief 删除节点 * @param string $query xpath查询字符串 * @return bool 成功返回true,失败返回false */ function delNode($query) { $node=$this->query($query); if($node) { $node->item(0)->parentNode->removeChild($node->item(0)); return true; } else { return false; } } /** * @brief 删除一个节点的属性 * @param string $query xpath查询字符串 * @param string $name 属性名称 * @return bool 成功返回true,失败返回false */ function delAttr($query, $name) { $node=$this->query($query); if($node) { $node->item(0)->removeAttribute($name); return true; } else { return false; } } /** * @brief 修改节点属性 * @param string $query xpath查询字符串 * @param string $name 属性名称 * @param string $value 属性值 * @return bool 成功返回true,失败返回false */ public function updAttr($query, $name, $value) { $node=$this->query($query); if($node) { $node->item(0)->setAttribute($name,$value); return true; } else { return false; } } /** * @brief 修改节点的值 * @param string $query xpath查询字符串 * @param string $value 属性值 * @return bool 成功返回true,失败返回false */ public function updNode($query, $value) { $node=$this->query($query); if($node) { $node->item(0)->nodeValue=$value; return true; } else { return false; } } /** * @brief 保存XML文档 * @param string $file XML文件名,不填写则默认以创建此类文件时的文件名来存储。 * @return mixed 成功返回写入的字节, 失败返回false */ public function save1($file='') { if($file=='' && $this->xmlfile!='')$file = $this->xmlfile; $this->dom->save($file); } /** * @brief 转换成XML字符串 * @return String */ public function save(){ return $this->dom->saveXML(); }}

 

转载于:https://www.cnblogs.com/liwuming/p/4494231.html

你可能感兴趣的文章
iLBC
查看>>
Linux 本地yum源搭建和网络yum源搭建
查看>>
HDU 5781 ATM Mechine
查看>>
使用Nginx搭建Tomcat9集群,Redis实现Session共享
查看>>
Extjs4.1 序列化和反序列化
查看>>
git 最常用命令
查看>>
iOS self 和 super 学习
查看>>
利用deadline_timer实现定时器Timer
查看>>
分布式日志收集系统:Facebook Scribe
查看>>
数据挖掘的方法有哪些?-转
查看>>
js的闭包的一个示例说明
查看>>
ARCGIS10如何修改图例的大小
查看>>
bin/sh failed with exit code 1
查看>>
Novell推出针对SAP所有应用而优化Linux平台
查看>>
《梦幻西游》打响反盗号战役:为2亿玩家提供360安全武器
查看>>
Silverlight面向客户端,HTML5面向Web
查看>>
微软拟向互联网开发商提供免费IIS 服务器
查看>>
seajs和requirejs对比;node初识
查看>>
JS函数
查看>>
(转)linux下vi命令修改文件及保存的使用方法
查看>>