用PHP解析XML 的方法

chibs 2008-03-27 11:36:20
关于用PHP解析XML 的方法,有没有不用另外安装什么包,如expat等。。就可以直接解析XML的?

所以,我要的是PHP本身就可以解析XML的语法,请高手指点!!谢谢~~
我学PHP没几天,别怪我问那么菜的问题呵~~
...全文
6740 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kge888 2011-01-26
多谢 分享,我也是新手
回复
pangzipangpang 2008-09-02
simplexml,PHP自带的。
回复
fcoolx 2008-09-02
什么也不用安装,
推荐两种方式
simplexml 比较简单,但是功能也少
dom比较全面,和msxml类似,做过其他语言开发的人很容易上手这个
回复
cuidenghong123 2008-09-01
学习!
回复
cheryc666 2008-09-01

$xml ="a.xml";
$dom = new DOMDocument();
$dom->load($xml);
$xml_value = $dom->getElementsByTagName('data');//标签
foreach($xml_value as $value){
$nodevalue = $value->nodeValue;
}
回复
一本书上的例子,可以参考
parse.php
<html>
<head><title>My Library</title></head>
<body>
<?php
class BookList{
var $parser,$record,$current_field='',$field_type,$ends_record,$records;
function BookList($filename){
$this->parser=xml_parser_create("utf-8");
xml_set_object($this->parser,&$this);
xml_set_element_handler($this->parser,start_element,end_element);
xml_set_character_data_handler($this->parser,cdata);

//1=单个字段,2=数组字段,3=记录容器
$this->field_type=array('title'=>1,
'author'=>2,
'isbn'=>1,
'comment'=>1 );
$this->ends_record=array("book"=>true);
$x=join("",file($filename));
xml_parse($this->parser,$x);
xml_parser_free($this->parser);
}
function start_element($p,$element,&$attributes){
$element=strtolower($element);
if($this->field_type[$element]!=0){
$this->current_field=$element;
}else{
$this->current_field='';
}
}
function end_element($p,$element){
$element=strtolower($element);
if($this->ends_record[$element]){
$this->records[]=$this->record;
$this->record=array();
}
$this->current_field='';
}
function cdata($p,$text){
if($this->field_type[$this->current_field]===2){
$this->record[$this->current_field][]=$text;
}elseif($this->field_type[$this->current_field]===1){
$this->record[$this->current_field]=$text;
}
}
function show_menu()
{
echo "<table border='1'>\n";
foreach($this->records as $book){
echo "<tr>";
$authors=join(',',$book['author']);
printf("<th><a href='%s'>%s</a></th><td>%s</td>\n",
$_SERVER['PHP_SELF'].'?isbn='.$book['isbn'],
$book['title'],
$authors);
echo "</tr>\n";
}
echo "</table>";
}
function show_book($isbn){
$Find=false;
foreach($this->records as $book){
if($book['isbn']===$isbn){
$author=join(',',$book['author']);
printf("<b>%s</b> by %s.<br>",$book['title'],$author);
printf("ISBN:%s<br>",$isbn);
printf("Comment:%s\n",$book['comment']);
$Find=true;
break;
}
}
if(!$Find)echo "<b style='color:red'>Can't find this book of '$isbn'</b>";
echo '<p>Back to the <a href="'.$_SERVER['PHP_SELF'].'">list of books</a>.</p>';
}
}

$lib=new BookList("book.xml");
if($_GET['isbn']){
$lib->show_book($_GET['isbn']);
}
else{
$lib->show_menu();
}
?>
</body>
</html>


book.xml
<?xml version="1.0" encoding="utf-8"?>
<library>
<book>
<title><![CDATA[PHP编程]]></title>
<authors>
<author>Rasmus Lerdorf</author>
<author>Kevin Tatroe</author>
</authors>
<isbn>1-56592-610-2</isbn>
<comment>A greate book!</comment>
</book>
<book>
<title><![CDATA[PHP参考手册]]></title>
<authors>
<author>Rasmus Lerdorf</author>
</authors>
<isbn>1-56592-769-9</isbn>
<comment>It really does fit in your pocket!</comment>
</book>
<book>
<title><![CDATA[Perl手册]]></title>
<authors>
<author>Tom Christiansen</author>
<author>Nathan Torkington</author>
</authors>
<isbn>1-56692-243-3</isbn>
<comment>Hundreds of useful techniques,most just as applicable to PHP as tc perl</comment>
</book>
</library>
回复
xiaolei1982 2008-09-01
php解析xml有现成的函数,可以参考手册
回复
iasky 2008-08-31
http://cn2.php.net/manual/en/book.xml.php
回复
qianziai0912 2008-06-13

1  php5的dom解析
2  php4的expat解析作
3. SimpleXM 提供了一种高效的检索xml文档的方法
4. 其他还有xslt、xpath等方法
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2008-03-27 11:36
社区公告
暂无公告