PHP之XML
来源:互联网 发布:万惠事件知乎 编辑:程序博客网 时间:2024/06/05 12:41
xml跟html一样属于dom结构,存在节点
php操作xml就跟javascript操作html结构一样
php操作xml常规操作是:
加载或者创建xml文件
获取xmlDOm结构
对XML结构进行增删改查
保存文件
//创建xml文档<?php$book = array( array('name'=>'php','type'=>'web'), array('name'=>'java','type'=>'web'), array('name'=>'html','type'=>'client'));//创建xml文档对象$dom = new domdocument('1.0','utf-8');$dom->formatOutput = true;//创建节点$books = $dom->createElement('books');foreach($book as $k=>$v){ $book = $dom->createElement('book'); $name = $dom->createElement('name',$v['name']); //添加子节点 $books->appendChild($book); $book->appendChild($name); //添加属性 $book->setAttribute('type',$v['type']);}$dom->appendChild($books);//保存xml文件$dom->save('save.xml');echo 'save succ';
//创建成功<?xml version="1.0" encoding="utf-8"?><books> <book type="web"> <name>php</name> </book> <book type="web"> <name>java</name> </book> <book type="client"> <name>html</name> </book></books>
//简单获取xml<?php$dom = new DOMDocument();//加载xml文件$dom->load('save.xml');//获取元素节点$res = $dom->getElementsByTagName('book');for($i=0;$i<$res->length;$i++){ echo $res->item($i)->getElementsByTagName('name')->item(0)->nodeValue;}
load()接收两个参数:
第一个参数是文件名;第二个参数是libxml选项常量,传递LIBXML_NOBLANKS可以忽略空白点。或者在加载前使用preserveWhiteSpace忽略空白。
//递归获取xml元素名称与值<?php$dom = new domdocument();$dom->preserveWhiteSpace=false;$dom->load('save.xml');$root = $dom->documentElement;tree($root);function tree($root){ echo "<ul>"; if($root->nodeType==3){ echo "<li>"; echo $root->nodeValue; echo "</li>"; }else{ echo "<li>"; echo $root->nodeName; echo "</li>"; //判断是否存在属性 if($root->attributes->length>0){ foreach($root->attributes as $attr){ echo "<li>"; //获取属性值 echo $attr->value; echo "</li>"; } } foreach($root->childNodes as $child){ tree($child); } } echo "</ul>";}
xPath
通过dom结构定位节点,在数据量很大的情况下速度下降的很快,使用xpath快速定位节点
<?php$dom = new domdocument();$dom->preservewhitespace = false;$dom->load('save.xml');$xpath = new domxpath($dom);//根据路径查找$path = '/books/book/name';res($path,$xpath);//路径基础上增加属性过滤 @type <>= val$path = "/books/book[@type='client']/name";res($path,$xpath);//路径基础上增加位置选择 索引从0开始,位置从1开始$path = "/books/book[position()=2]/name";res($path,$xpath);//路径基础上选择最后一个位置$path = "/books/book[last()]/name";function res($path,$xpath){ $res = $xpath->query($path); foreach($res as $node){ echo $node->nodeValue,'<br/>'; } echo '<hr>';}
simpleXML
这是PHP5以后新增对xml文档的操作,相对于其它语言(java、C++)的独特特点,可以将XML的DOM结构转换为对象和数组来进行操作。
创建simpleXMLElement对象
//1$sim = simplexml_load_file('save.xml');//2$xml = file_get_contents('save.xml');$sim = new simplexmlelement($xml);//3$sim = simplexml_load_string($xml);
<?php$xml = file_get_contents('save.xml');$sim = new simplexmlelement($xml);echo '<pre>';var_dump($sim);
var_dump($sim->book);foreach($sim->book as $book){ $attr = $book->attributes(); echo $attr->type; echo '-'; echo $book->name; echo '</br>';}
//添加节点//返回一个simpleXML对象$book = $sim->addChild('book');$book->addChild('name','node');$book->addAttribute('type','web');$sim->saveXML('save.xml');
//更新节点$length = count($sim->book);$sim->book[$length-1]->name.='.js';$sim->saveXML('save.xml');
//删除节点for($i=count($sim->book)-1;$i>=0;$i--){ $book = $sim->book[$i]; $attr = $book->attributes(); if($attr->type=='web'){ unset($sim->book[$i]); }}$sim->saveXML('save.xml');
源文件
0 0
- PHP之XML
- php 处理 xml 之 解析
- php之SimpleXml操作xml
- ----php之XML转数组函数
- Php Xml解析之DOMDocument使用方法
- PHP基础之使用Expat解析xml
- PHP基础之使用DOM解析xml
- PHP基础之使用SimpleXML解析xml
- php学习之json And xml
- PHP之AJAX,XML,JSON一揽子方案
- PHP 之XML编程,注释总结
- xml php
- PHP XML
- php xml
- PHP---XML
- PHP & XML
- PHP - XML - Creating XML
- PHP - XML - Validating XML
- C++ Primer 学习笔记_100_特殊工具与技术 优化内存分配[续2]
- C++ Primer 学习笔记_101_非一般工具与技术 -运行时类型识别
- [Java]命令行模拟TCP客户端与服务端的简单小程序遇到的问题(基础不牢!扎实和亲手实践比什么都重要!)
- sqlserver生成表结构文档的方法
- Java 时间 转换/Date(1384171247000+0800)/
- PHP之XML
- 面向对象设计的SOLID原则
- 51nod 1681 公共祖先 (在这两个平行宇宙有多少人一直是他们的公共祖先)
- 飛飛(二十九)工资类数组的应用
- 深入理解计算机系统bomb_lab
- 【项目那些事】项目管理真的可以完全靠人来管理吗?
- 浅谈Hibernate中映射集合属性以及主键和外键
- KPM、BM、 AC、ACBM算法分析
- Ext JS中如何从grid页面取得cloumns中的数据