的条件和数据。所有的示例代码将使用XML数据源来描述一个库及其中包含的书。
程序代码
复制代码 代码如下:
<xml version="1.0"?>
<library>
<categories>
<category cid="1">Web Development</category>
<category cid="2">Database Programming</category>
<category cid="3">PHP</category>
<category cid="4">Java</category>
</categories>
<books>
<book>
<title>Apache 2</title>
<author>Peter Wainwright</author>
<publisher>Wrox</publisher>
<category>1</category>
</book>
<book>
<title>Advanced PHP Programming</title>
<author>George Schlossnagle</author>
<publisher>Developer Library</publisher>
<category>1</category>
<category>3</category>
</book>
<book>
<title>Visual FoxPro 6 - Programmers Guide</title>
<author>Eric Stroo</author>
<publisher>Microsoft Press</publisher>
<category>2</category>
</book>
<book>
<title>Mastering Java 2</title>
<author>John Zukowski</author>
<publisher>Sybex</publisher>
<category>4</category>
</book>
</books>
</library>
四、 DOM DOM PHP扩展名允许使用W3C DOM API在XML文档上进行操作。在PHP 5出现之前,这是PHP能存取XML文档的唯一方法。如果你在JavaScript中使用了DOM,那么会认识到这些对象模型几乎是一样的。
由于DOM方法在遍历和操作XML文档时比较罗嗦,所以任何DOM兼容的代码都有明显的优点-与任何其它实现相同的W3C兼容的对象模型的API兼容。
在下面的实例代码中,我们使用DOM来显示关于每本书的信息。首先,我们遍历一下列表目录,把它们的Id和相应的名字装载到一个索引数组中。然后,我们显示每本书的一个简短描述:
PHP:
复制代码 代码如下:
<?php
/*这里我们必须指定XML版本:也即是1.0 */
$xml = new DomDocument(''1.0'');
$xml->load(''xml/library.xml'');
/*首先,创建一个目录列表*/
$categories = array();
$XMLCategories = $xml->getElementsByTagName(''categories'')->item(0);
foreach($XMLCategories->getElementsByTagName(''category'') as $categoryNode) {
/*注意我们是如何得到属性的*/
$cid = $categoryNode->getAttribute(''cid'');
$categories[$cid] = $categoryNode->firstChild->nodeValue;
}
?>
<html>
<head>
<title>XML Library</title>
</head>
<body>
<?
php foreach($xml->getElementsBytagName(''book'') as $book):
/*查找标题*/
$title = $book->getElementsByTagName(''title'')->item(0)->firstChild->nodeValue;
/*查找作者-为了简化起见,我们假设仅仅有一个作者*/
$author = $book->getElementsByTagName(''author'')->item(0)->firstChild->nodeValue;
/* 列表目录*/
$bookCategories = $book->getElementsByTagName(''category'');
$catList = '''';
foreach($bookCategories as $category) {
$catList .= $categories[$catego