t;books;//返回元素"books"
$xml->books->book[0];//返回在books元素中的第一本书
· 属性(Attribute)-元素的属性是通过关联数组标志来存取和设置的,此时每一个索引对应于一个属性名。
$category[''cid''];//返回cid属性的值
· 元素数据(Element Data)-为了检索包含在一个元素内的文本数据,必须使用(string)显式地把它被转换为一个字符串或使用print或echo输出它。如果一个元素包含多个文本结点,那么它们将按被找到的顺序连接起来。
echo ($xml->books->book[0]->title);//显示第一本书的标题
下面是使用简单XML进行转换的原来的实例。为了装载XML文件,我们使用simplexml_load_file()函数,由它来分析该XML文件并且把它装载进一个SimpleXMLElement对象中:
PHP:
复制代码 代码如下:
<?php
$xml = simplexml_load_file(''xml/library.xml'');
/* 把一个列表的目录装载到一个数组中*/
$categories = array();
foreach($xml->categories->category as $category) {
$categories[(string) $category[''cid'']] = (string) $category;
}
?>
<html>
<head>
<title>XML Library</title>
</head>
<body>
<?php foreach($xml->books->book as $book):
/* 列举目录*/
$catList = '''';
foreach($book->category as $category) {
$catList .= $categories[((string) $category)] . '', '';
}
$catList = substr($catList, 0, -2); ?>
<div>
<h2><?php echo($book->title) ?></h2>
<p><b>Author:</b>: <?php echo($book->author) ?></p>
<p><b>Categories: </b>: <? php echo($catList) ?></p>
</div>
<? php endforeach; ?>
</html>
七、 修改XML 尽管文本数据和属性值可以通过使用简单XML加以设置,但是不能新建这些对象。然而,SimpleXM的确提供了一种方法来实现DomElement对象和DomElement对象之间的转换。为此,我修改了addCategory()函数来说明如何使用simplexml_import_dom()函数以添加目录和把该文档转换回简单的XML格式:
PHP:
复制代码 代码如下:
function addCategory(SimpleXMLElement &$sXML, $catID, $catName) {
$xml = new DOMDocument;
$xml->loadXML($sXML->asXML());
$catName = $xml->createTextNode($catName); //创建一个结点来存放该文本
$category = $xml->createElement(''category''); //创建一个目录元素
$category->appendChild($catName); //把文本添加到目录元素
$category->setAttribute(''cid'', $catID); //设置目录id
$XMLCategories = $xml->getElementsByTagName(''categories'')->item(0);
$XMLCategories->appendChild($category); //添加新目录
$sXML = simplexml_import_dom($xml);
return $sXML;
}
同样,SimpleXMLElement对象的asXML()函数可以用来检索XML字符串并把它保存回一个文件中。
八、 xPath 毫无疑问,Xpath是"XML蛋糕之上的樱桃"。XPath允许你使用象SQL一样的
查询来查找一个XML文档中的特定信息。DOM和SimpleXML都有内置的对XPath的支持,如SQL,可以被用来提取你想从一XML文档中提取的任何内容。
程序代码
· //category-查找所有的在文档中出现的任何category。
· /library/books-查找所有作为library的孩子出现的books
· /library/categories/category[@cid]-查找所有作为library/categories的孩子出现且属性为cid的category。
· /library/categor