php读取xml列表程序
May 25, 2016 pm 04:41 PM
php读取xml
php读了xml很方便的,我们下面用dom与php自带的xml_parser来实例吧,我们先看看wk.xml 文件,其实这里是blogbus的rss文件,代码如下:
<?xml version="1.0" encoding="gb2312" <rss version="2.0"> <channel> <title>mikeowen</title> <link>http://mikeowen.blogbus.com</link> <description><![CDATA[Design]]></description> <generator> by blogbus.com </generator> <lastBuildDate>Tue, 30 Jan 2007 13:46:52 +0800</lastBuildDate> <image> <url>http://public.blogbus.com/images/head.gif</url> <title>mikeowen</title> <link>http://mikeowen.blogbus.com</link> </image> <item> <title>vanke</title> <description>tff</description> <link>http://mikeowen.blogbus.com/logs/28560579.html</link> <author>mikeowen</author> <pubDate>Fri, 05 Sep 2008 12:41:22 +0800</pubDate> </item> <item> <title>something3</title> <description>eee</description> <link>http://mikeowen.blogbus.com/logs/23972142.html</link> <author>mikeowen</author> <pubDate>Wed, 02 Jul 2008 12:26:40 +0800</pubDate> </item> </channel> </rss>
登录后复制
这是我一个同事的博客rss文件我取下来作实例了吧,下面我们来看看解析xml的方法用dom来做,实例代码如下:
<?php $doc = new DOMDocument(); $doc->load( 'wk.xml' ); $books = $doc->getElementsByTagName( "item" ); foreach( $books as $book ) { $authors = $book->getElementsByTagName( "title" ); $author = $authors->item(0)->nodeValue; $publishers = $book->getElementsByTagName( "link" ); $publisher = $publishers->item(0)->nodeValue; $titles = $book->getElementsByTagName( "pubDate" ); $title = $titles->item(0)->nodeValue; echo "$title - $author - $publishern"; } //开源代码phprm.com
登录后复制
简单吧,直接读取节点然后再取当前第一个节点的值就行了,好了下面我们再看看一种方法用php自然的,代码如下:
<?php $g_books = array(); $g_elem = null; function startElement( $parser, $name, $attrs ) { global $g_books, $g_elem; if ( $name == 'item' ) $g_books []= array(); $g_elem = $name; } function endElement( $parser, $name ) { global $g_elem; $g_elem = null; } function textData( $parser, $text ) { global $g_books, $g_elem; if ( $g_elem == 'link' || $g_elem == 'pubDate' || $g_elem == 'title' ) { $g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text; } } $parser = xml_parser_create(); xml_set_element_handler( $parser, "startElement", "endElement" ); xml_set_character_data_handler( $parser, "textData" ); $f = fopen( 'wk.xml', 'r' ); while( $data = fread( $f, 4096 ) ) { xml_parse( $parser, $data ); } xml_parser_free( $parser ); foreach( $g_books as $book ) { echo $book['title']." - ".$book['link']." - "; echo $book['pubDate']."n"; }
登录后复制
这种代码多一点,单效率要比上面那个高很多的.
文章链接:
随便收藏,请保留本文地址!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)