DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范(http://www.w3.org/DOM/),DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标准组件。
说到对xml文件的操作,简单的入门的话无非是: 读取文件,写文件,修改文件 首先说读取文件,我们可以使用两种方法,一种是dom方式,一种是php提供的SimpleXMLElement对象。 我的xml文件中的内容如下: 名字叫做test1.xml $xmlstr = 'test1.xml'; //加载xml文件(load a xml file) //$xml = simplexml_load_file($xmlstr); //这也是一种简单可行的方法 //the third parameter means the first parameter is url or not $xml = new SimpleXMLElement($xmlstr,NULL,TRUE); //以属性的方式读取 //echo $xml->book[0]->title; //循环度读取元素 foreach ($xml->book as $book ){ //echo $book->plot." "; } //修改文本节点信息 $xml->book[0]->define = "self define!"; //插入节点 $mybook = $xml->addChild('book'); $mybook->addChild('title','Anna'); $mybook->addChild('plot','About Anna'); $mybook->addChild('define','added by me!'); echo $xml->asXML(); //输出xml文件内容 代码很清晰,不用更多解释了。下面的是使用dom对象读取的方法: $dom = new DOMDocument('1.0'); $books = $dom->getElementsByTagName('book'); //注意这里获取的类型是DOMNodelist $book = $books->item(0); //这里获取的类型是DOMNode $title = $book->getElementsByTagName('title'); echo $title->item(0)->nodeValue; //输出节点信息 这里有点难理解,关键是DOMNodelist和DOMNode这两种类型。 nodelist就像一个数组,是我们用getElementsByTagName获取到的,它具有item方法,item后面可以跟上index来指明是访问那个node,有点类似与数组但是用法完全不一样。node的话,具有nodeValue这个属性,可是使用它来访问node的具体内容。 对于nodelist,一般都倾向与使用迭代来便利,用法如下: foreach($books as $book){ //$books是nodelist类型的,$book是node类型的 //具体操作 } 读文件完成了,下面是写文件: //创建一个dom对象 $dom = new DOMDocument('1.0'); //创建根节点 $books = $dom->appendChild($dom->createElement('books')); //创建子节点 $book = $books->appendChild($dom->createElement('book')); //创建子节点 $title = $book->appendChild($dom->createElement('title')); //写入文本内容 $title->appendChild($dom->createTextNode('Great American Novel')); //格式化输出 $dom->formatOutput = true; //保存xml到文件 $dom -> save('test1.xml'); // save as file 最后是修改文件,其实也很简单,打开以后读取node的值,修改,然后保存就可以了。 //读取根节点 $root = $dom->getElementsByTagName('books'); //创建一个book节点 $mybook = $dom->createElement('book'); //添加到根节点 $root->item(0)->appendChild($mybook); //创建title节点 $title = $dom->createElement('title'); //向title节点写入文本内容 $title->appendChild($dom->createTextNode('The deviche code')); //修改文本内容 $title->nodeValue='my novel'; //添加到book节点 $mybook->appendChild($title); //保存xml文件 $dom->save($xml_path); 修改文本的时候有两种方法,个人感觉第二种直接写nodeValue更好一些。 掌握了这三种操作,简单的xml操作基本就没有问题了。 这里有所有你想要的: DOMNodelist讲解: http://www.phpchina.com/manual/php/function.dom-domnodelist-item.html phpsimplexml官方帮助文档: http://us3.php.net/manual/en/book.simplexml.php |
2010年10月9日星期六
SimpleXML php操作xml的简单入门
订阅:
博文评论 (Atom)
没有评论:
发表评论