一.使用SimpleXML操控XML

要处理XML 文件,有两种传统的处理思路:SAX 和DOM。SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理;DOM 则将整个XML 文件构造为一棵DOM树,通过对DOM 树的遍历完成处理。这两种方法各有优缺点,SAX 的处理思路相对抽象,DOM 的处理过程相对烦琐,都不很适合新手的入门。PHP5 推出了一套新的XML 处理函数,即SimpleXML。名如其实,SimpleXML 本身小巧精干,只提供了少量的几个方法函数,但用它处理起XML 文件功能却非常强大,操作也非常的简单。

  1.创建XML文件

$_xml =<<<xml
<?xml version="1.0" encoding="utf-8"?>
<root>
<version>1.0</version>
<info>xml解析测试</info>
<user>
<name>张三</name>
<url>http://www.ss.com</url>
<author sex="男">张三</author>
</user>
<user>
<name>宿舍</name>
<url>http://www.ss.com</url>
<author sex="女">谁谁谁</author>
</user>
<user>
<name>电驴</name>
<url>http://www.ss.com</url>
<author sex="男">姓黄的</author>
</user>
</root>
xml;
$_sxe= new SimpleXMLElement($_xml); //创建对象解析xml字符串
$_sxe->asXML('test.xml'); //生成XML文件

  2.载入XML文件

$_sxe= simplexml_load_file("test.xml"); //载入XML文件
var_dump($_sxe); //输出相关信息
print_r($_sxe); //输出主要信息
Reflection::export(new ReflectionClass($sxe)); //用反射查看详情

  3.解析XML文件

$_sxe= simplexml_load_file("test.xml"); //载入XML文件
var_dump($_sxe); //输出相关信息
print_r($_sxe); //输出主要信息
Reflection::export(new ReflectionClass($_sxe)); //用发射查看详情
echo $_sxe->asXML();//打印整个XML

  4.读出XML数据

$_sxe= simplexml_load_file("test.xml");
//读取一级节点的值,比如version标签
echo $_sxe->version;
//如果有多个,可以设置它的数字下标
echo $_sxe->version[];
//如果想要全部打印出来,可以用遍历
foreach ($_sxe->version as $_version) {
echo '['.$_version.']';
}
//访问二级节点的name
echo $_sxe->user[]->name;
//获取所有二级节点的name值
foreach ($_sxe->user as $_user) {
echo '['.$_user->name.']';
}
//获取二级节点的标签的属性
echo $_sxe->user[]->author->attributes();

  5.使用XPath来获取节点

$_sxe= simplexml_load_file("test.xml");
//使用XPath获取节点信息
$_version = $_sxe->xpath('/root/version');
echo $_version[];
//遍历version
foreach ($_version as $_v) {
echo '['.$_v.']';
}
//访问二级节点
$_user = $_sxe->xpath('/root/user');
echo $_user[]->name;
//遍历二级节点
foreach ($_user as $_u) {
echo '['.$_u->name.']';
}
//访问属性
echo $_user[]->author->attributes();

二.使用DOMDocument操控XML

很多情况下,手工生成标记要求从上到下生成文档,必须保证标签都是完整的,开始和结束标签。尽管借助于一些PHP函数或类可以有所改善,不过PHP还提供了一组更有帮助的内置对象和函数。文档对象模型(Document Object Model,DOM)提供了一个树状结构,能很容易创建和处理标签。

  1.DOMDocument解析XML

//创建一个DOMDocument()
$_doc = new DOMDocument();
//载入xml
$_doc->load('test.xml');
//取version标签
$_version = $_doc->getElementsByTagName('version');
echo $_version->item()->nodeValue;
//遍历version标签
foreach ($_version as $v) {
echo $v->nodeValue;
}

  2.DOMDocument生成XML

//声明xml
$_doc = new DOMDocument('1.0','utf-8');
//排版格式
$_doc->formatOutput = true;
//创建一个主标签
$_root = $_doc->createElement('root');
//创建一个一级标签version
$_version = $_doc->createElement('version');
//给version标签里赋值
$_versionTextNode = $_doc->createTextNode('1.0');
//将值放入version标签里
$_version->appendChild($_versionTextNode);
//将一级标签version放入root里
$_root->appendChild($_version);
//将主标签写入xml
$_doc->appendChild($_root);
//生成xml
$_doc->save('aaa.xml');

最新文章

  1. Xamarin+Prism开发详解二:Xaml文件如何简单绑定Resources资源文件内容
  2. JavaScript中的继承
  3. iOS图片拉伸技巧
  4. IOS 网络浅析-(九 NSURLSession代理简介)
  5. 如何获取QQ里的截图app?
  6. UNITY3D与iOS交互解决方案
  7. Java常用锁机制简介
  8. requirejs实践二 加载其它JavaScript与运行
  9. Bootstrap--全局CSS样式之排版
  10. BeanUtils在web项目中的应用
  11. 基于visual Studio2013解决面试题之1309求子集
  12. 学习笔记——状态模式State
  13. java获取某一字段日期并增加7天存入另一字段
  14. BZOJ3456城市规划
  15. POST 调用 301 Moved Permanently 问题
  16. Android:进程优先级
  17. [蓝桥杯]ALGO-84.算法训练_大小写转换
  18. Oracle pl/sql导入sql文件,插入更新数据,中文乱码问题解决方案
  19. Mongodb 存储日志信息
  20. dev的控件放在没有runat=&quot;server&quot;的标签中,回调出现的问题

热门文章

  1. js Excel导出
  2. javascript中所谓的“坑”收录
  3. Openstack 组件简介
  4. Selection II
  5. better-scroll的用法,及其中的一个属性event._constructed详解
  6. 02-SSH综合案例:需求分析(后台)
  7. word2vec 细节解析1
  8. ubuntu14.04环境下利用docker搭建solrCloud集群
  9. sql中从指定位置截取指定长度字符串
  10. MySQL学习3---事务