XML XPATH simpleXML

XPath

经过DOM结构定位节点,在数据量很大的状况下速度降低的很厉害。解决方法是XPath。Xpath的做用:用于快速定位节点php

position()是节点的位置,节点的位置是从1开始数组

simpleXML

PHP5以上提供了一个simpleXML对象来操做XML。把XML的节点转换成对象和数组去操做。spa

思路:先讲xml字符串转化成对象及数组xml

/****************************************************************/对象

<?php
$xml= file_get_contents('books.xml');//获取XML的字符串
$simple=new SimpleXMLElement($xml);//把xml字符串转换成数组 $simple表明根节点
//一、查询
//echo '<pre>';
//var_dump($simple);blog

echo "<table border='1'>";
foreach ($simple->book as $book){
$attr=$book->attributes();//获取节点的属性
echo "<tr>";
echo "<td>".$book->name."</td>";
echo "<td>".$book->price."</td>";
echo "<td>".$attr['type']."</td>";
echo "</tr>";
}
echo "</table>";
//添加
/*
$book=$simple->addChild('book');//在根节点下加book节点
$book->addChild('name', 'C++');
$book->addChild('price','11');
$book->addAttribute('type', '动态语言');
$simple->saveXML('books.xml');//保存xml文件
*
*/
//更新
/*
foreach($simple->book as $book){
$book->name.='-北京出版社';
}
$simple->saveXML('books.xml');
*
*/
//删除
for($i=count($simple->book)-1;$i>=0;$i--){//从最后往前删除对应的元素,
//若是从前日后删除元素,则$i不停变换是的对应的元素并不会被删除
$currentbook=$simple->book[$i]; //当前的图书

$attr=$currentbook->attributes();
if($attr['type']=='动态语言')
{
unset($simple->book[$i]);
}
}
$simple->saveXML('books.xml');字符串

相关文章
相关标签/搜索