用PHP解析XML 的方法

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

所以,我要的是PHP本身就可以解析XML的语法,请高手指点!!谢谢~~
我学PHP没几天,别怪我问那么菜的问题呵~~
...全文
6791 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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;
}
Go 旅城通票 2008-09-01
  • 打赏
  • 举报
回复
一本书上的例子,可以参考
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等方法

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧