在PHP中开发XML应用程序之基础篇
发布时间:2006-03-20 11:19:15 来源:天极开发 网友评论 0 条 七、 修改XML
尽管文本数据和属性值可以通过使用简单XML加以设置,但是不能新建这些对象。然而,SimpleXM的确提供了一种方法来实现DomElement对象和DomElement对象之间的转换。为此,我修改了addCategory()函数来说明如何使用simplexml_import_dom()函数以添加目录和把该文档转换回简单的XML格式:
PHP:
同样,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:
九、 DOM和XPath
在DOM中计算XPath查询需要创建一个DOMXPath对象,下面的evaluate()函数返回一个DOMElement数组。
十、 结论
现在,我们学习了如何使用了PHP提供给我们的工具来与XML交互。至此,我们已经被"武装起来"并准备好深入钻研XML应用程序了。在下一篇文章中,我们将讨论AJAX及其如何应用于象Google这样的站点开发的。
尽管文本数据和属性值可以通过使用简单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这样的站点开发的。
- 推荐阅讯
- PHP V4.4.0 RC2下载地址列表
- PHP中通过Web 执行C/C++应用程序
- 一个全面获取图象信息的函数getImageInfo()
- 用PHP构建一个留言本<1>
- 实例学习PHP之投票程序篇(二)
- 用PHPdig打造属于你自己的Google
- PHP调用三种数据库的方法(3)
- PHP强制对象类型之instanceof操作符
- 实例学习PHP之表单处理篇(一)
- 防范SQL注入攻击的代码
- 阅读排行
- 1.实例学习PHP之表单处理篇(一)
- 2.实例学习PHP之表单处理篇(二)
- 3.结合AJAX进行PHP开发之入门
- 4.PHP V5.0.5下载列表
- 5.用PHP读取和编写XML DOM
- 6.使用"函数递归"实现动态树型菜单
- 7.PHP环境下配置在线编辑器FCKeditor
- 8.利用PHP和AJAX创建RSS聚合器
- 9.实例学习PHP之投票程序篇(二)
- 10.实例学习PHP之投票程序篇(一)
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
