PHP5的simpleXML可以将XML文件的元素都转为工具,相同子元素转换成工具数组,让我们在PHP程序直策应用foreach指令和取得指定元素的名称、内容和属性值;
通过simpleXML_load_file()函数来载入XML文件档案
$library = simplexml_load_file("book.xml");
上述程序载入XML文件档案book.xml,函数传回simpleXML类型的工具,载入失落败传回false;

在成功载入XML文档后,$library工具是XML文件的根元素,存取其子元素便是存取$library工具的成员变量,如下所示:
$books = $library->book
上述程序存取子元素book,由于book子元素不但一个,所有取回的是工具数组,我们可以利用数组的下标值取得指定的book元素,如下所示
$book = $books[1];
上述程序取得第2个book元素,由于索引从0开始
如果book元素还有子元素,以是利用相同办法取得下一层子元素,如下所示:
书名:$book->title
书的价格:$book->price
在取得指定元素后,元素属性是一个数组,属性名称为键值,如下所示:
$book->title['lang'];
把稳:"->" 优先级要高些
books.xml文件:
<?xml version="1.0" encoding="utf-8"?><bookstore><book><title lang="eng">Harry Potter</title><price>18.34</price></book><book><title lang="eng">Learning XML</title><price>35.76</price></book></bookstore>
php代码:
<?php//装载一个xml文件$library = simplexml_load_file("books.xml");//$library便是一个工具echo "<pre>";var_dump($library);echo "</pre>";//取出书,$books便是一个数组$books = $library->book;echo count($books);$book=$books[0];//取出书名echo $book->title;//取出书的价格echo $book->price;for($i=0;$i<count($books);$i++){$book = $books[$i];//取出title节点的属性$title=$book->title;echo $title['lang'];//简化的语句:echo $book->title['lang'];echo $book->title."|".$book->price."<br/>";}?>
simpleXML与XPath结合利用:
在载入XML文件后,simpleXML供应xpath()方法实行xpath查询,如下所示:
foreach($library->xpath("//title") as $title){echo "书名:".$title."<br />";}
上述foreach循环显示实行xpath查询取得的所有的title元素的值,即书名;
simpleXML也可以直接装载一个string字符串(xml规范)
simplexml_load_string()函数把XML字符串载入工具中。如果失落败,则返回false。
<?php$string = <<<XML<?xml version="1.0" encoding="utf-8"?><bookstore><book><title lang="eng">Harry Potter</title><price>19.57</price></book><book><title lang="eng">Learning XML</title><price>34.47</price></book></bookstore>XML;$xml = simplexml_load_string($string);foreach($xml->xpath("//title") as $title){echo $title."<br />";//print_r($xml); //打印$xml工具}?>
上例输出结果
Harry Potter
Learning XML
simpleXML装载DOM工具
simplexml_import_dom()函数把DOM节点转换为SimpleXMLElement工具。如果失落败,则该函数返回false。
<?php$dom = new DOMDocument();$dom -> loadXML ( '<books><book><title>blah</title></book></books>' );if (! $dom ) {echo 'Error while parsing the document' ;exit;}$xmldom = simplexml_import_dom ( $dom );echo $xmldom -> book [ 0 ]-> title ;?>
上例输出结果:
blah