当前位置:首页 > PHP教程 > php应用 > 列表

php读取xml列表程序

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-20 16:07:39 浏览: 评论:0 

php读了xml很方便的,我们下面用dom与php自带的xml_parser来实例吧,我们先看看wk.xml 文件,其实这里是blogbus的rss文件,代码如下:

  1. <?xml version="1.0" encoding="gb2312"?> 
  2. <rss version="2.0"> 
  3.  <channel> 
  4.   <title>mikeowen</title> 
  5.   <link>http://mikeowen.blogbus.com</link> 
  6.   <description><![CDATA[Design]]></description> 
  7.   <generator> by blogbus.com </generator> 
  8.   <lastBuildDate>Tue, 30 Jan 2007 13:46:52 +0800</lastBuildDate> 
  9.   <image> 
  10.          <url>http://public.blogbus.com/images/head.gif</url> 
  11.          <title>mikeowen</title> 
  12.          <link>http://mikeowen.blogbus.com</link> 
  13.         </image>  
  14. <item> 
  15.    <title>vanke</title> 
  16.    <description>tff</description> 
  17.    <link>http://mikeowen.blogbus.com/logs/28560579.html</link> 
  18.    <author>mikeowen</author> 
  19.    <pubDate>Fri, 05 Sep 2008 12:41:22 +0800</pubDate> 
  20.   </item> 
  21.   <item> 
  22.    <title>something3</title> 
  23.    <description>eee</description> 
  24.    <link>http://mikeowen.blogbus.com/logs/23972142.html</link> 
  25.    <author>mikeowen</author> 
  26.    <pubDate>Wed, 02 Jul 2008 12:26:40 +0800</pubDate> 
  27.   </item>  
  28.  </channel> 
  29. </rss> 

这是我一个同事的博客rss文件我取下来作实例了吧,下面我们来看看解析xml的方法用dom来做,实例代码如下:

  1. <?php 
  2.   $doc = new DOMDocument(); 
  3.   $doc->load( 'wk.xml' ); 
  4.    
  5.   $books = $doc->getElementsByTagName( "item" ); 
  6.   foreach$books as $book ) 
  7.   { 
  8.   $authors = $book->getElementsByTagName( "title" ); 
  9.   $author = $authors->item(0)->nodeValue; 
  10.    
  11.   $publishers = $book->getElementsByTagName( "link" ); 
  12.   $publisher = $publishers->item(0)->nodeValue; 
  13.    
  14.   $titles = $book->getElementsByTagName( "pubDate" ); 
  15.   $title = $titles->item(0)->nodeValue; 
  16.    
  17.   echo "$title - $author - $publishern"
  18.   } 
  19. //开源代码phpfensi.com 
  20. ?> 

简单吧,直接读取节点然后再取当前第一个节点的值就行了,好了下面我们再看看一种方法用php自然的,代码如下:

  1. <?php   
  2.   $g_books = array(); 
  3.   $g_elem = null; 
  4.    
  5.   function startElement( $parser$name$attrs )  
  6.   { 
  7.   global $g_books$g_elem
  8.   if ( $name == 'item' ) $g_books []= array(); 
  9.   $g_elem = $name
  10.   } 
  11.    
  12.   function endElement( $parser$name )  
  13.   { 
  14.   global $g_elem
  15.   $g_elem = null; 
  16.   } 
  17.    
  18.   function textData( $parser$text ) 
  19.   { 
  20.   global $g_books$g_elem
  21.   if ( $g_elem == 'link' || 
  22.   $g_elem == 'pubDate' || 
  23.   $g_elem == 'title' ) 
  24.   { 
  25.   $g_bookscount$g_books ) - 1 ][ $g_elem ] = $text
  26.   } 
  27.   } 
  28.    
  29.   $parser = xml_parser_create(); 
  30.    
  31.   xml_set_element_handler( $parser"startElement""endElement" ); 
  32.    
  33.   xml_set_character_data_handler( $parser"textData" ); 
  34.    
  35.   $f = fopen'wk.xml''r' );   
  36.    
  37.   while$data = fread$f, 4096 ) ) 
  38.   { 
  39.   xml_parse( $parser$data ); 
  40.   } 
  41.    
  42.   xml_parser_free( $parser ); 
  43.    
  44.   foreach$g_books as $book ) 
  45.   { 
  46.   echo $book['title']." - ".$book['link']." - "
  47.   echo $book['pubDate']."n"
  48.   } 
  49.   ?> 

这种代码多一点,单效率要比上面那个高很多的.

Tags: php读取xml xml列表程序

分享到: