PHP DOMDocument实现XML读写操作
是PHP脚本读取XML最原始,最笨的方法。
代码如下 | 复制代码 |
$doc = new DOMDocument(); |
简单,容易,速度快
代码如下 | 复制代码 |
objectToArray函数代码如下 function objectToArray($object) |
上面讲到了读取xml,下面再介绍写xml实例
代码如下 | 复制代码 |
$arr = array( |
入门级
simple_html_dom插件
用dom处理html文件的利器
使用:
加载simple_html_dom.php文件
require_once 'simple_html_dom.php'
new simple_html_dom对象
$dom = new simple_html_dom()
加载html
$dom->load($html);
find()方法
$dom->find('div.lookLeftname', 0)->plaintext
class=‘lookLeftname'的div中的纯文本
$dom->find('div.lookLeftname', 0)->innertext
class='lookLeftname'的div中的内部文本
完整测试实例
代码如下 | 复制代码 |
<?php for($i=1;$i<=21;$i++){ |
html代码页面
代码如下 | 复制代码 |
<html> |
wordpress.php文件
代码如下 | 复制代码 |
//接收类型 看看用户做什么(查询、添加....) //进行判断 if(!$isEnter){ //进行挂载 $root->appendChild($word); //保存xml文件 if(!$isEnter){ if(!$isEnter){ }else{ |
words.xml
代码如下 | 复制代码 |
<?xml version="1.0" encoding="utf-8"?> |
DOMElement
DOMElement DOMDocument::createElement ( string $name [, string $value ] )
创建节点元素
String $name:节点名
String $value:节点的值
8、 添加节点
•DOMNode DOMNode::appendChild ( DOMNode $newnode )
添加子节点
DOMNode $newnode:新节点
在dom操作中,增删改操作必须依赖于父节点
9、 保存
•string DOMDocument::saveXML
保存至某个字符串中
•int DOMDocument::save ( string $filename )
保存至某个文件中
String $filename:文件名
10、 删除节点
•DOMNode DOMNode::removeChild ( DOMNode $oldnode )
删除节点
DOMNode $oldnode:要删除的节点
11、 更新节点
•DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
DOMNode $newnode:新节点
DOMNode $oldnode:原节点
12、 添加属性
•DOMAttr DOMElement::setAttribute( string $name , string $value )
string $name :属性名
string $value :属性值
13、 修改属性
DOMAttr DOMElement::setAttribute( string $name , string $value )
string $name :属性名
string $value :属性值
14、 删除属性
•bool DOMElement::removeAttribute ( string $name )
string $name:要删除的属性名称
15、 获取属性
•string DOMElement::getAttribute ( string $name )
string $name:要获取的属性值的属性名
DOMDocument还是PHP5后推出的DOM扩展的一部分,可用来建立或解析html/xml,目前只支持utf-8编码。
代码如下 | 复制代码 |
$xmlstring = <<<XML $dom = new DOMDocument(); function getArray($node) { if ($node->hasAttributes()) { if ($node->hasChildNodes()) { |
SimpleXML
SimpleXML是PHP5后提供的一套简单易用的xml工具集,可以把xml转换成方便处理的对象,也可以组织生成xml数据。不过它不适用于包含namespace的xml,而且要保证xml格式完整(well-formed)。它提供了三个方法:simplexml_import_dom、simplexml_load_file、simplexml_load_string,函数名很直观地说明了函数的作用。三个函数都返回SimpleXMLElement对象,数据的读取/添加都是通过SimpleXMLElement操作
代码如下 | 复制代码 |
$xml = simplexml_load_string($string); |
SimpleXML的优点是开发简单,缺点是它会将整个xml载入内存后再进行处理,所以在解析超多内容的xml文档时可能会力不从心。如果是读取小文件,而且xml中也不包含namespace,那SimpleXML是很好的选择。
XMLReader
XMLReader也是PHP5之后的扩展(5.1后默认安装),它就像游标一样在文档流中移动,并在每个节点处停下来,操作起来很灵活。它提供了对输入的快速和非缓存的流式访问,可以读取流或文档,使用户从中提取数据,并跳过对应用程序没有意义的记录。
以一个利用google天气api获取信息的例子展示下XMLReader的使用,这里也只涉及到一小部分函数,更多还请参考官方文档。
代码如下 | 复制代码 |
$xml_uri = 'http://www.google.com/ig/api?weather=Beijing&hl=zh-cn'; $reader = new XMLReader(); //get forecast data |
XMLReader和XML Parser类似,都是边读边操作,较大的差异在于SAX模型是一个“推送”模型,其中分析器将事件推到应用程序,在每次读取新节点时通知应用程序,而使用XmlReader的应用程序可以随意从读取器提取节点,可控性更好。
由于XMLReader基于libxml,所以有些函数要参考文档看看是否适用于你的libxml版本。
生成XML格式数据
我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息。
代码如下 | 复制代码 |
CREATE TABLE `student` ( |
首先,建立createXML.php文件,先连接数据库,获取数据。
代码如下 | 复制代码 |
include_once ("connect.php"); //连接数据库 |
这个时候,数据就保存在$arr中,你可以使用print_r打印下数据测试。
接着,建立xml,循环数组,将数据写入到xml对应的节点中。
代码如下 | 复制代码 |
$doc = new DOMDocument('1.0', 'utf-8'); // 声明版本和编码 |
我们调用了PHP内置的类DOMDocument来处理与生成xml。最终生成的xml格式请点击这里看效果
代码如下 | 复制代码 |
<?xml version="1.0" encoding="utf-8"?> |
获取XML格式数据
现在我们假设要从第三方获取学生信息,数据格式是XML,我们需要使用PHP解析XML,然后将解析后的数据显示或者写入本地数据库。而这里关键的一步是解析XML。
PHP有很多中方法可以解析XML,其中PHP提供了内置的XMLReader类可以循序地浏览过xml档案的节点,你可以想像成游标走过整份文件的节点,并抓取需要的内容。使用XMLReader是高效的,尤其是读取非常大的xml数据,相对其他方法,使用XMLReader消耗内存非常少。
代码如下 | 复制代码 |
header("Content-type:text/html; Charset=utf-8"); |
为了将数据name,sex和age分开,我们使用$i%3来判断取模,因为在获取的xml中,节点data下的信息是以3个子节点存在的。
相关文章
- php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
- 有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
用js的document.write输出的广告无阻塞加载的方法
一、广告代码分析很多第三方的广告系统都是使用document.write来加载广告,如下面的一个javascript的广告链接。复制代码 代码如下:<script type="text/javascript" src="http://gg.5173.com/adpolestar/5173/;ap=2EBE5...2014-06-07- 本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
jQuery+slidereveal实现的面板滑动侧边展出效果
我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15- 翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
SQLMAP结合Meterpreter实现注入渗透返回shell
sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25- 该例子使用 BinaryStream 和 BinaryWriter 对二进制文件进行读写操作先上代码再根据我理解的所分享给各位朋友...2020-06-25
- 复制代码 代码如下: // 第一种写法 $da = date("w"); if( $da == "1" ){ echo "今天是星期一"; }else if( $da == "2" ){ echo "今天是星期二"; }else if( $da == "3" ){ echo "今天是星期三"; }else if( $da == "4"...2013-10-04
- js里面设置DOM节点透明度的函数属性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/100(兼容FF和GG)。 先来看看设置透明度的兼容性代码: 复制代码 代码如下: function setOpacity(ele, opacity) { if (...2014-06-07
- 这篇文章主要为大家详细介绍了C#读写共享文件夹的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要介绍了解决docker挂载的目录无法读写问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-19
- 这篇文章主要介绍了Go语言使用读写OPC详解,图文讲解的很清晰,有感兴趣的同学可以学习下...2021-03-05
使用Python文件读写,自定义分隔符(custom delimiter)
这篇文章主要介绍了使用Python文件读写,自定义分隔符(custom delimiter),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-06- 本文我们需要解决的问题是如何实现Http请求来实现通信,解决Android 2.3 版本以后无法使用Http请求问题,下面请看正文。 Android开发中使用HttpClient来开发Http程序...2016-09-20
- 复制代码 代码如下:call PROCEDURE_split('分享,代码,片段',',');select * from splittable;复制代码 代码如下:drop PROCEDURE if exists procedure_split;CREATE PROCEDURE `procedure_split`( inputstring varc...2014-05-31
- 这篇文章介绍了C#操作内存读写方法的主要实现代码,下面让我们来看看具体的实例实现,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了R语言开发之CSV文件的读写操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-06
- 文字发光效果我们可以直接使用css来实现了今天我们来看一篇关于文字发光效果的例子,希望这篇文章能够帮助到各位朋友哦。 前言 我录制的慕课网视频一直没有上线,慕...2016-09-14
- 基本思想就是:在JS动态创建select控件的option,通过Ajax获取在PHP从SQL数据库获取的省市区信息,代码有点长,但很多都是类似的,例如JS中省、市、区获取方法类似,PHP中通过参数不同执行不同的select语句。index.html代码:复制...2014-05-31