php xmlreader转数组,摘要:本文主要是介绍古老的XML数据格式的发展及应用,其中PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写、DOMDocument读写、XM...

摘要:本文主要是介绍古老的XML数据格式的发展及应用,其中PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写、DOMDocument读写、XMLWrite写和XMLReader读、SimpleXML读写。

一、xml的简介1、XML是可扩展性标记语言。

2、XML的设计宗旨是为了传输数据。

3、XML标签没有被预定义,需要自行定义。

二、XML的应用1、XML可以当做配置文件。

2、XML可以当小型数据库。

3、XML是跨平台的语言,用于各个语言之间的数据交互。

三、XML语法规范1、声明一个处理指令<?xml version='1.0' encoding='utf-8'?>

2、文档为树状结构,只能有一个根目录

3、标签必须合法,标签必须闭合(单双标签),大小写一致,不能交叉。

4、属性必须有值,属性值必须有引号。

5、特殊符号使用符号实体(单引号'双引号"空格 &符号&大于号)

6、有特殊符号的大段内容使用表示

四、代码示例如下<?xml version='1.0' encoding='utf-8'?>

yun

18

book

19

五、js操作XML1、创建空的XML对象

try{

xmlDoc=new ActiveXObject('Microsoft.XML'); // IE创建xmlDoc

}catch(e){

xmlDoc=document.implementation.createDocument('','',null); // opera,mozilla,firefox等创建xmlDoc

}

2、加载XML文件

try{

xmlDoc.async = false; //关闭异步加载

xmlDoc.load = ('yunbook.xml');

}catch(e){

}

3、获取XML文件的节点

var person = xmlDoc.getElementsByTagName('person');//取到所有标签为person的节点

var per1 = person[0]; // 取到第一个studnet1

var per1Info = per1.children; // 取到第一个student的所有元素子节点

var name = studentnote[0].childNodes[0].nodeValue; // 取到第一个节点name的第一个节点的值

window.alert(name);

六、用PHP字符串方式读写XML文件#写

$mysqli = mysqli_connect('localhost', 'root', '123456', 'yunbook');

if(mysqli_connect_errno()) die('database connect fail:' . mysqli_connect_error());

$sql = 'select * from book order by starttime';

$res = mysqli_query($mysqli, $sql);

$books = array();

while($row = mysqli_fetch_array($res)) {

$books[] = $row;

}

//XML标签配置

$xmlTag = array(

'starttime',

'endtime',

'name'

);

$str = "n";

foreach($study as $v) {

$str .= "tn";

foreach($xmlTag as $x) {

$str .= "tt" . $v[$x] . "".$x.">n";

}

$str .= "tn";

}

$str .= '';

$file = './write_book.xml';

file_put_contents($file, $str);

#读

七、用PHP的DOMDocument方式读取XML#xmlDOM读取方法

1、实例化一个xmldom对象

$xmlDoc = new DOMDocument('1.0','utf-8');

2、加载XML文件

$xmlDoc->load('person.xml'); // 加载本地xml文件

$xmlDoc->loadXML('string'); // 加载xml字符串

3、通过getElementsByTagName('') 方法获取DOMNodeList对

$xmlDoc->getElementsByTagName('name');

4、通过调用DOMNodeList里的item()方法得到DOMElement对象

$xmlDoc->getElementsByTagName('name')->item(0);

5、通过nodeValue属性,来获取节点的值

$xmlDoc->getElementsByTagName('name')->item(0)->nodeValue;

八、用PHP的 SimpleXML方式读取XML#simplexml读取方法

1、获取XML对象

$simXML = simplexml_load_file('person.xml');

2、调用对象的属性值从而获得xml标签值

$simXML->per1[0]->name;

九、XMLWriter和XMLReader读写XML文件<?php

$mysqli = mysqli_connect('localhost', 'root', '123456', 'yunbook');

if(mysqli_connect_errno()) die('database connect fail:' . mysqli_connect_error());

$sql = 'select * from study order by starttime';

$res = mysqli_query($mysqli, $sql);

$study = array();

while($row = mysqli_fetch_array($res)) {

$study[] = $row;

}

//XML标签配置

$xmlTag = array(

'starttime',

'endtime',

'school'

);

$xml = new XMLWriter();

$xml->openUri('./write_WR.xml');

$xml->setIndentString(' ');

$xml->setIndent(true);

$xml->startDocument('1.0', 'utf8');

$xml->startElement('first');

foreach($study as $s) {

$xml->startElement('period');

foreach($xmlTag as $x) {

$xml->startElement($x);

$xml->text($s[$x]);

$xml->endElement();

}

$xml->endElement();

}

$xml->endElement();

$xml->endDocument();

$xml->flush();

十、总结这四种方法中,

字符串的方式是最原始的方法,其中开发效率比较低下。

SimpleXML和DOM扩展是属于基于树的解析器,把整个文档存储为树的数据结构中,需要把整个文档都加载到内存中才能工作,所以当处理大型XML文档的时候,性能会剧减。

XMLReader则是属于基于流的解析器,它不会一次把整个文档加载到内存中,而是每次分别读取其中的一个节点并允许实时与之交互,这种方式效率高,而且占用内存少。

所以,本文推荐采用XMLWriter和XMLReader的方式读和写XML文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值