请教如何用simplexml解析这个xml文档?

topirol 2011-12-27 12:11:40
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">
<id>http://api.douban.com/book/subject/3921815</id>
<title>玫瑰之吻</title>
<category scheme="http://www.douban.com/2007#kind" term="http://www.douban.com/2007#book"/>
<author>
<name>伯恩哈特(PeterBernhardt)</name>
</author>
<link href="http://api.douban.com/book/subject/3921815" rel="self"/>
<link href="http://book.douban.com/subject/3921815/" rel="alternate"/>
<link href="http://img1.douban.com/spic/s4158042.jpg" rel="image"/>
<summary>
《玫瑰之吻:花的博物学》……
</summary>
<db:attribute name="subtitle">花的博物学</db:attribute>
<db:attribute name="isbn10">7301154828</db:attribute>
<db:attribute name="isbn13">9787301154823</db:attribute>
<db:attribute name="title">玫瑰之吻</db:attribute>
<db:attribute name="pages">247</db:attribute>
<db:attribute name="translator">刘华杰</db:attribute>
<db:attribute name="author">伯恩哈特(PeterBernhardt)</db:attribute>
<db:attribute name="price">32.00元</db:attribute>
<db:attribute name="publisher">北京大学出版社</db:attribute>
<db:attribute name="binding">平装</db:attribute>
<db:attribute name="pubdate">2009-7</db:attribute>
<db:attribute name="author-intro">
伯恩哈特(PeterBetnhardt,1952一),美国圣路易斯大学生物系教授,美国密苏里植物园、澳大利亚悉尼皇家植物园副研究员。讲授的课程有《植物与真菌》、《民族植物学》(Ethnobotany)、《传粉生物学》、《兰花生物学与兰花分类》。出版的植物学通俗作品有《狡猾的堇菜和地下兰》、《自然韵事》、《玫瑰之吻》以及《花园中的诸神》。 译者简介: 刘华杰(1966一),植物爱好者,北京大学哲学系、北京大学科学传播中心教授。研究方向为科学哲学、科学思想史和科学传播学。关注博物学生存方式和博物学的复兴问题。主要作品有《浑沌语义与哲学》、《分形艺术》、《一点二阶立场》、《中国类科学》、《看得见的风景:博物学生存》、《草木相伴》等。
</db:attribute>
<db:tag count="202" name="植物"/>
<db:tag count="148" name="科普"/>
<db:tag count="84" name="博物学"/>
<db:tag count="64" name="自然"/>
<db:tag count="58" name="花"/>
<db:tag count="31" name="伯恩哈特"/>
<db:tag count="26" name="玫瑰之吻"/>
<db:tag count="16" name="植物之书"/>
<gd:rating average="8.5" max="10" min="0" numRaters="195"/>
</entry>


xml文件地址:http://api.douban.com/book/subject/3921815


请问用PHP中simplexml如何获取<gd:rating average="8.5" max="10" min="0" numRaters="195"/>中的average的值8.5,和numRaters的值195?



参考一片文章的一段代码:
$apiurl='http://api.douban.com/book/subject/3921815';
$Feed = file_get_contents($apiurl);
$xml = simplexml_load_string($Feed,null,null,"http://www.douban.com/xmlns/");

然后,如果通过$xml获得上面所说的两个值呢?请高手解答,谢谢!
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tottyandbaty 2011-12-27
  • 打赏
  • 举报
回复

//闲着无聊,随便弄了弄,将就着用吧
$apiurl='http://api.douban.com/book/subject/3921815';
$Feed = file_get_contents($apiurl);
$p = xml_parser_create();
xml_parse_into_struct($p, $Feed, $vals, $index);
print_r($vals);

/*

Array
(
//省略部分。。。。

[60] => Array
(
[tag] => GD:RATING
[type] => complete
[level] => 2
[attributes] => Array
(
[AVERAGE] => 8.5
[MAX] => 10
[MIN] => 0
[NUMRATERS] => 195
)

)

[61] => Array
(
[tag] => ENTRY
[value] =>

[type] => cdata
[level] => 1
)

[62] => Array
(
[tag] => ENTRY
[type] => close
[level] => 1
)

)

*/


tottyandbaty 2011-12-27
  • 打赏
  • 举报
回复
用DOM来解析
一起混吧 2011-12-27
  • 打赏
  • 举报
回复

$apiurl='http://api.douban.com/book/subject/3921815';
$Feed = file_get_contents($apiurl);
preg_match('#<gd:rating average="(.*)" max="10" min="0" numRaters="(\d+)"/>#s',$Feed,$arr);
print_r($arr);

Array
(
[0] => <gd:rating average="8.5" max="10" min="0" numRaters="195"/>
[1] => 8.5
[2] => 195
)
一起混吧 2011-12-27
  • 打赏
  • 举报
回复

$apiurl='http://api.douban.com/book/subject/3921815';
$Feed = file_get_contents($apiurl);
preg_match('#<gd:rating average="(.*)" max="10" min="0" numRaters="(\d+)"/>#s',$Feed,$arr);
print_r($arr);

Array
(
[0] => <gd:rating average="8.5" max="10" min="0" numRaters="195"/>
[1] => 8.5
[2] => 195
)
一起混吧 2011-12-27
  • 打赏
  • 举报
回复

$apiurl='http://api.douban.com/book/subject/3921815';
$Feed = file_get_contents($apiurl);
preg_match('#<gd:rating average="(.*)" max="10" min="0" numRaters="(\d+)"/>#s',$Feed,$arr);
print_r($arr);

Array
(
[0] => <gd:rating average="8.5" max="10" min="0" numRaters="195"/>
[1] => 8.5
[2] => 195
)
topirol 2011-12-27
  • 打赏
  • 举报
回复
能用simplexml简单写个例子吗 谢谢

$xml = simplexml_load_file('http://api.douban.com/book/subject/392181');
echo $xml->summary.'<br/>';//不要可以读出<summary></summary>之间的内容

如何读出<gd:rating average="8.5" max="10" min="0" numRaters="195"/>这种标签,里面的参数呢?

21,882

社区成员

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

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