php之SimpleXml操作xml

来源:互联网 发布:顶贴软件 编辑:程序博客网 时间:2024/05/15 23:13

bookstore.xml

<?xml version="1.0" encoding="utf-8" ?><bookstore>    <book category="COOKING">        <title lang="en">Everyday Italian</title>        <author>Giada De Laurentiis</author>        <year>2005</year>        <price>30.00</price>    </book>    <book category="CHILDREN">        <title lang="en">Harry Potter</title>        <author>J K. Rowling</author>        <year>2005</year>        <price>29.99</price>    </book>    <book category="WEB">        <title lang="en">Learning XML</title>        <author>Erik T. Ray</author>        <year>2003</year>        <price>39.95</price>    </book></bookstore>

1.添加

<?php$sxe  = simplexml_load_file('bookstore.xml');//添加book节点$new_book = $sxe->addChild('book');//book节点添加属性$new_book->addAttribute('category','武侠');//book节点下添加节点$new_title = $new_book->addChild('title','神雕侠侣');$new_title->addAttribute('lang','zh-cn');$new_autor = $new_book->addChild('autor','金庸');$new_year = $new_book->addChild('year','1980');$new_price = $new_book->addChild('price','8');//保存到指定文件$sxe->asXML('sxe_insert.xml');

观察$sxe对象:

$sxe  = simplexml_load_file('bookstore.xml');var_dump($sxe);

这里写图片描述

2.删除

<?php$sxe  = simplexml_load_file('bookstore.xml');//删除所有price节点foreach ($sxe->book as $book){    unset($book->price);//删除对象的属性}$sxe->asXML('sxe_delete.xml');

3.修改

<?php$sxe  = simplexml_load_file('bookstore.xml');//所有书价格打八折foreach ($sxe->book as $book){    $book->price *=0.8;}$sxe->asXML('sxe_update.xml');

4.查询

<?php//三种创建方式// simplexml_load_file($filename)// simplexml_load_string($data)$sxe  = simplexml_load_file('bookstore.xml');$table = '';$table.= "<table border='1'>";$table.= "<tr><th>title</th><th>author</th><th>year</th><th>price</th></tr>";//获取所有book节点的信息foreach ($sxe->book as $book){    $table.="<tr>";    $table.="<td>{$book->title}</td>";    $table.="<td>{$book->author}</td>";    $table.="<td>{$book->year}</td>";    $table.="<td>{$book->price}</td>";    $table.="</tr>";}$table.= "</table>";echo  $table;//获取第一个book节点的属性foreach($sxe->book[0]->attributes() as $k=>$v){    echo $k,'=',$v;}

查询运行:
这里写图片描述

0 0