注意:
1,获得属性值 ,通过数组下标的形式,数组下标要大写
2,当XML文件中有英文字符和汉字的时候,需要使用 CDATA 来做特殊处理
语法:<![CDATA[ ]]>
<?php
class student{
public $name = 'xiaoer';
function __toString(){
return 'xiaoer';
}
}
$student = new student();
echo $student;
DOM方式和SAX方式的异同:
1,先将XML文件在内存中解析成节点树,如果XML文件非常大,会占用很大的内存
SAX:不需要在内存中生成节点树,而是遇到标签就解析
2,SAX解析速度比DOM要快
3,如果XML结构有问题的话,DOM方式无法解析,因为无法在内存中生成节点树;SAX会一直解析,知道错误的发生地
4,DOM一般用于解析复杂的XML;SAX适用于解析数据量特别大的XML文件
使用simpleXML解析XML文件
是php专门提供的一种简单的操作XML文件的对象
实例化simpleXML对象:
原理:
simpleXMLElement这个对象会将所有的XML的元素转化成对象,相同的元素名转化成对象的集合
foreach($books as $book){
echo $book->author;
}
访问某一个节点:
1,访问元素的属性,通过数组下标的形式
$id = $books[0]['id'];
2,如果获得的是一个对象的集合,foreach遍历
3,如果要找具体的某一个元素 通过数组索引
$first_book = $books[0];
foreach($books as $book){
echo $book->author;
echo $book->title;
}
//增加一个节点:
//我们可以把 $sxe 看作是文档的根节点
$new_book = $sxe ->addChild('book');
//在刚创建的book节点上 增加一个title 内容是 侠客行
$new_book ->addChild('title','侠客行');
//保存
$sxe ->asXML('book3.xml');
删除节点
Unset(删除的节点)
$book = $sxe ->book[4];
unset($book);
修改节点
$sxe ->book[3]->author = '金庸';