PHP基于DOMDocument解析和生成xml的方法分析


Posted in PHP onJuly 17, 2017

本文实例讲述了PHP基于DOMDocument解析和生成xml的方法。分享给大家供大家参考,具体如下:

前面和大家分享了SimpleXML操作xml的一些知识,但是php中除了simplexml还有DOMDocument,这次就着重来看看DOMDocument的用法,还是把生成xml和解析xml分开写

1. xml的生成

DOMDocument操作xml要比先前的simplexml要复杂一点,我觉得simplexml就想Java里的dom4j,不管怎样原理都是一样的。如果把DOMDocument里的节点,属性看做是枝叶那么DOMDocument的DOMDocument就是根,节点和属性都挂载在这个对象下面。看看下面的代码就很清楚了

<?php
 $doc=new DOMDocument('1.0','utf-8');
 //创建根节点
 $root=$doc->createElement("StudentInfo");
 //创建第一个子节点
 $item=$doc->createElement("Item");
 $name=$doc->createElement("name","蔡依林");
 $studentnum=$doc->createElement("num","2009010502");
 //创建属性(phpdom可以把任何元素当做子节点)
 $id=$doc->createAttribute("id");
 $value=$doc->createTextNode('1');
 $id->appendChild($value);
 //在父节点下面加入子节点
 $item->appendChild($name);
 $item->appendChild($studentnum);
 $item->appendChild($id);
 $item2=$doc->createElement("Item");
 $name2=$doc->createElement("name","潘玮柏");
 $studentnum2=$doc->createElement("num","2009010505");
 $id2=$doc->createAttribute("id");
 $value2=$doc->createTextNode('2');
 $id2->appendChild($value2);
 $item2->appendChild($name2);
 $item2->appendChild($studentnum2);
 $item2->appendChild($id2);
 $root->appendChild($item);
 $root->appendChild($item2);
 //把根节点挂载在DOMDocument对象
 $doc->appendChild($root);
 header("Content-type: text/xml");
 //在页面上输出xml
 echo $doc->saveXML();
 //将xml保存成文件
 $doc->save("stu.xml");
?>

这段代码仔细看的话其实不复杂,可能性在id属性的那个地方会有点疑问,文本节点也必须挂载在DOMDocument下面,之后把文本节点挂载在属性下面。来看下生成的xml

PHP基于DOMDocument解析和生成xml的方法分析

其实DOMDocument是首先生成节点或属性,而xml的层级关系是最后通过addchild来体现的

2. DOMDocument解析

<?php
 $doc=new DOMDocument();
 //如果是解析xml字符串则使用loadXML
 $doc->load('stu.xml');
 //取得根节点
 $root=$doc->documentElement;
 //通过标记的名字取得对应的元素
 $items=$root->getElementsByTagName('Item');
 foreach($items as $key=>$val){
  // echo count($val->attributes);
  //id是第一个属性所以使用item(0),nodeValue用来取得节点的值
  echo $val->attributes->item(0)->name.":".$val->attributes->item(0)->nodeValue."  ";
  foreach($val->getElementsByTagName('name') as $key2=>$val2){
    echo $val2->nodeValue."  ";
  }
  foreach($val->getElementsByTagName('num') as $key3=>$val4){
    echo $val4->nodeValue."</br>";
  }
 }
?>

解析的话重在理解,getElementsByTagName方法,attributes属性和item是解析xml的重点。别的都算简单,看看解析出来的东西

PHP基于DOMDocument解析和生成xml的方法分析

总的来说是比simplexml麻烦一些,但是作为程序员还能接受吧。

PHP 相关文章推荐
php上传、管理照片示例
Oct 09 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
May 10 PHP
php自定义apk安装包实例
Oct 20 PHP
php身份证号码检查类实例
Jun 18 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
PHP的PDO连接讲解
Jan 24 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 #PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 #PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 #PHP
老生常谈PHP中的数据结构:DS扩展
Jul 17 #PHP
PHPstorm快捷键(分享)
Jul 17 #PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
Jul 16 #PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 #PHP
You might like
剖析 PHP 中的输出缓冲
2006/12/21 PHP
PHP中Date获取时间不正确怎么办
2008/06/05 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
JS实现分页导航效果
2020/02/19 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
Python函数中的可变长参数详解
2019/09/12 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
用python制作个音乐下载器
2021/01/30 Python
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python