<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获得上面所说的两个值呢?请高手解答,谢谢!

解决方案 »

  1.   


    //闲着无聊,随便弄了弄,将就着用吧
    $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
            ))*/
      

  2.   

    能用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"/>这种标签,里面的参数呢?
      

  3.   


    $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
    )
      

  4.   


    $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
    )
      

  5.   


    $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
    )