再说 PHP 中 SimpleXML
前一篇帖子使用了 xpath,后来了解到 xpath 的性能可能比较差,而且在遇到有命名空间的时候还有点小麻烦。这里都已豆瓣提供的 API 返回的 xml 为例。豆瓣返回的 xml 不是 rss 格式的,而是 Atom 格式,有很多的命名空间,如果习惯于操作 rss 格式的 xml,那么可以直接把 xml 里面的命名空间的字符串都 replace 掉,这个方法貌似很简单很暴力,就不会遇到命名空间的问题了。 从豆瓣 API 开始,点击这个链接 http://api.douban.com/book/subjects?q=java 你就可以看到 xml 格式,由于返回的是 Atom 格式的 xml,浏览器会自动帮你解析,所以应该这样 # 这样就可以得到一个java.xml文件。 $ wget -O java.xml http://api.douban.com/book/subjects?q=java 这样就可以得到一个 java.xml 文件,接下来使用 SimplePHP 处理这个文件。 首先要创建一个 SimpleXML 对象 //$content为xml的内容 $xml = new SimpleXMLElement($content); 现在要获取 opensearch 命名空间下的 totalResults 节点的文本,代码如下: $children = $xml->children('http://a9.com/-/spec/opensearchrss/1.0/'); $totalResults = $children->totalResults; 处理所有 xml 文档中所有的 entry 节点 //处理所有找到的记录 $entries = $xml->entry; foreach($entries as $entry){ //取命名空间下的孩子节点 $entryChildren = $entry->children('http://www....