科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件在PHP中开发XML应用程序之基础篇

在PHP中开发XML应用程序之基础篇

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在本篇中,我们将细致地分析PHP提供给我们的XML工具以及如何使用它们操纵XML数据源

作者:朱先忠 来源:天极开发 2007年10月21日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
七、 修改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/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>

  九、 DOM和XPath

  在DOM中计算XPath查询需要创建一个DOMXPath对象,下面的evaluate()函数返回一个DOMElement数组。

$xPath = new DOMXPath($xml);
$xPath->evaluate("/library/books/book[title='Apache 2']");

  十、 结论

  现在,我们学习了如何使用了PHP提供给我们的工具来与XML交互。至此,我们已经被"武装起来"并准备好深入钻研XML应用程序了。在下一篇文章中,我们将讨论AJAX及其如何应用于象Google这样的站点开发的。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章