php读取xml文件的三种实现方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-20 14:33:24 浏览: 评论:0
文章介绍了三种方式来读取xml文件分别是new DOMDocument(),正则解析xml,用parser函数来读取xml数据,这些方法都是可行的,但第一种和最后一种要好一些.
new DOMDocument()实例代码如下:
- <?php
- $doc = new DOMDocument();
- $doc->load( 'books.xml' );
- $books = $doc->getElementsByTagName( "book" );
- foreach( $books as $book )
- {
- $authors = $book->getElementsByTagName( "author" );
- $author = $authors->item(0)->nodeValue;
- $publishers = $book->getElementsByTagName( "publisher" );
- $publisher = $publishers->item(0)->nodeValue;
- $titles = $book->getElementsByTagName( "title" );
- $title = $titles->item(0)->nodeValue;
- echo "$title - $author - $publisher/n";
- }
- ?>
正则解析,代码如下:
- <?php
- $xml = "";
- $f = fopen( 'books.xml', 'r' );
- while( $data = fread( $f, 4096 ) ) { $xml .= $data; }
- fclose( $f );
- preg_match_all( "//<book/>(.*?)/<//book/>/s",
- $xml, $bookblocks );
- foreach( $bookblocks[1] as $block )
- {
- preg_match_all( "//<author/>(.*?)/<//author/>/",
- $block, $author );
- preg_match_all( "//<title/>(.*?)/<//title/>/",
- $block, $title );
- preg_match_all( "//<publisher/>(.*?)/<//publisher/>/",
- $block, $publisher );
- echo( $title[1][0]." - ".$author[1][0]." - ".
- $publisher[1][0]."/n" );
- }
- ?>
books.xml文件如下:
- <books>
- <book>
- <author>Jack Herrington</author>
- <title>PHP Hacks</title>
- <publisher>O'Reilly</publisher>
- </book>
- <book>
- <author>Jack Herrington</author>
- <title>Podcasting Hacks</title>
- <publisher>O'Reilly</publisher>
- </book>
- </books>
下面就给大家举一个小小的例子用parser函数来读取xml数据,代码如下:
- <?php
- $parser = xml_parser_create(); //创建一个parser编辑器
- xml_set_element_handler($parser, "startElement", "endElement");//设立标签触发时的相应函数 这里分别为startElement和endElenment
- xml_set_character_data_handler($parser, "characterData");//设立数据读取时的相应函数
- $xml_file="1.xml";//指定所要读取的xml文件,可以是url
- $filehandler = fopen($xml_file, "r");//打开文件
- while ($data = fread($filehandler, 4096))
- {
- xml_parse($parser, $data, feof($filehandler));
- }//每次取出4096个字节进行处理
- fclose($filehandler);
- xml_parser_free($parser);//关闭和释放parser解析器
- $name=false;
- $position=false;
- function startElement($parser_instance, $element_name, $attrs) //起始标签事件的函数
- {
- global $name,$position;
- if($element_name=="NAME")
- {
- $name=true;
- $position=false;
- echo "名字:";
- }
- if($element_name=="POSITION")
- {$name=false;
- $position=true;
- echo "职位:";
- }
- }
- function characterData($parser_instance, $xml_data) //读取数据时的函数
- {
- global $name,$position;
- if($position)
- echo $xml_data."<br>";
- if($name)
- echo $xml_data."<br>";
- }
- //开源代码phpfensi.com
- function endElement($parser_instance, $element_name) //结束标签事件的函数
- {
- global $name,$position;
- $name=false;
- $position=false;
- }
- ?>
xml文件代码如下:
- <?xml version="1.0"?>
- <employees>
- <employee>
- <name>张三</name>
- <position age="45">经理</position>
- </employee>
- <employees>
- <employee>
- <name>李四</name>
- <position age="45">助理</position>
- </employee>
- </employees>
parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:起始标签、 读取数据、结束标签.
也就是说在对xml进行处理的时候每当遇到起始标签、数据和结束标签的时候函数会做相应的动作来完成对xml数据的转换.
Tags: PHP读取xml文件 php读取xml文档
- 上一篇:php xml读写操作实现代码
- 下一篇:PHP解析JSON与XML程序
相关文章
- ·PHP如何读取xml文件?php读取xml文档例子(2014-08-20)
- ·php读取树型xml文件实现类(2014-08-20)
- ·php读取xml文件(2014-08-21)
- ·如何在PHP中读取XML文件(2019-12-30)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)