技术开发 频道

在PHP中开发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/categories/category[@att='2']-查找所有作为library/categories的孩子且具有属性cid的值为2出现的category。

    · /library/books/book[title='Apache 2']-查找所有作为/library/books的孩子且其标题元素有一个值为Apache 2出现的book。

    其实,这仅是xPath冰山之一角。你可以使用xPath来创建大量复杂的查询以便从你的文档中提取几乎任何信息。我再次修改了示例代码来向你展示使用xPath是多么轻松愉快的事情。

    PHP:

    <?php
    $xml = simplexml_load_file('xml/library.xml');
    ?>
    <html>
    <head>
    <title>XML Library</title>
    </head>
    <body>
    <?php foreach(((array)$xml->xpath("/library/books/book")) as $book):
    /*列表目录*/
    $catList = '';
    foreach($book->category as $category) {
    /*得到具有这个ID的目录*/
    $category = $xml->xpath("/library/categories/category[@cid='$category']");
    $catList .= (string) $category[0] . ', ';
    }
    $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> 

0
相关文章