中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 网页编程 -> PHP编程 -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ASP编程 · .NET编程
· PHP编程 · JSP编程
· CGI 专区
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· 在PHP中开发XML应用...
· 在PHP中开发XML应用...
· 在PHP5中使用DOM控制...
· 在PHP5中使用DOM控制...
· 怎样在PHP中通过ADO...
· LINUX学习笔记--FTP...
· 精通数据库系列之入...
· 精通数据库系列之入...
· “在phpMyAdmin使用...
· 在phpMyAdmin使用用...
在PHP中开发XML应用程序之基础篇(2)
作者:不详  来源:不详  发布时间:2006-8-14 11:03:19  发布人:chinazhan

 减小字体 增大字体

     四、 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[$category->firstChild->nodeValue] . ', ';
   }
   $catList = substr($catList, 0, -2); ?>
  <div>
  <h2><?php echo($title) ?></h2>
  <p><b>Author:</b>: <?php echo($author) ?></p>
  <p><b>Categories: </b>: <?php echo($catList) ?></p>
  </div>
  <? php endforeach; ?>
  </html>
  
    再提一下,修改XML是较麻烦的。例如,添加一个目录的代码如下:
  
    PHP:
  
  function addCategory(DOMDocument $xml, $catID, $catName) {
   $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); //添加新目录
  }
  
    五、 保存XML
  
    你可以使用save()和saveXML()方法之一来把DOM描述转换回XML字符串描述。save()方法用一指定的命名把XML保存到一个文件中,而saveXML()从文档的部分或整体中返回一个字符串。
  
  $xml->save('xml/library.xml');
  //保存全部文件
  $categories=$xml->saveXML($XMLCategories);
  //返回一个包含种类的字符串
  
    为了说明把DOM兼容的代码移植到另外的语言是如何容易,下面是用JavaScript形式实现的与以上功能相同的代码:
  
  javascript:
  function doXML(){
   /* 首先创建一个种类列表*/
   var categories = Array();
   var XMLCategories = xml.getElementsByTagName('categories')[0];
   var theCategories = XMLCategories.getElementsByTagName('category');
   for (var i = 0; i < theCategories.length; i++) {
    /* 注意我们是怎样得到属性的*/
    var cid = theCategories[i].getAttribute('cid');
    categories[cid] = theCategories[i].firstChild.nodeValue;
   }
   var theBooks = xml.getElementsByTagName('book');
   for(var i = 0; i < theBooks.length; i++) {
    var book = theBooks[i];
    /* 查找标题*/
    var title = book.getElementsByTagName('title')[0].firstChild.nodeValue;
    /* 查找作者-为简单起见,我们假定仅有一个作者*/
    var author = book.getElementsByTagName('author')[0].firstChild.nodeValue;
    /* 列出种类*/
    var bookCategories = book.getElementsByTagName('category');
    var catList = '';
    for(var j = 0; j < bookCategories.length; j++) {
     catList += categories[bookCategories[j].firstChild.nodeValue] + ', ';
    }
    catList = catList.substring(0, catList.length -2);
    document.open();
    document.write("<h2>" + title + "</h2>");
    document.write("<p><b>Author:</b>: " + author + "</p>");
    document.write("<p><b>Categories: </b>: " + catList + "</p>");
   }
   document.close();
  }
  
    六、 简单XML
  
    简单XML确实简单。它允许使用对象和数组存取方法来存取一个XML文档及其元素和属性。操作方式很简单:
  
    · 元素(Element)-这些被描述为SimpleXMLElement对象的单个属性。当有多个作为文档或元素的子元素存在时,每个元素能被使用数组索引标志加以存取。
  
  $xml->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>
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。

 
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .