http://www.cnn.com/intl_index.html

...

http://www.cnn.com/2017/01/11/politics/russia-rejects-trump-allegations/index.html

http://www.cnn.com/2017/01/11/politics/russia-rejects-trump-allegations/index.html

Wed, 11 Jan 2017 14:44:49 GMT

...

如果您使用simplexml解析此XML,如下所示:

$rss = simplexml_load_file($url, null, LIBXML_NOCDATA);

$rssjson = json_encode($rss);

$rssarray = json_decode($rssjson, TRUE);

你会看到< media:content>在$rssarray项目中丢失了.所以我找到了一个带有“命名空间”解决方案的tutorial.但是,在示例中,作者使用:

foreach ($xml->channel->item as $item) { ... }

但我正在使用(出于某些原因不能使用foreach):

$rssjson = json_encode($rss);

$rssarray = json_decode($rssjson, TRUE);

所以我修改了我的案例的解决方案,如下所示:

$rss = simplexml_load_file($url, null, LIBXML_NOCDATA);

$namespaces = $rss->getNamespaces(true); // get namespaces

$rssjson = json_encode($rss);

$rssarray = json_decode($rssjson, TRUE);

if (isset($rssarray['channel']['item'])) {

foreach ($rssarray['channel']['item'] as $key => $item) {

$media_content = $rss->channel->item[$key]->children($namespaces['media']);

foreach($media_content as $tag) {

$tagjson = json_encode($tag);

$tagarray = json_decode($tagjson, TRUE);

}

}

}

但它不起作用.对于我在$tagarray中获得的每个项目,结果是具有以下结构的数组:

Array(

'content' => array(

'0' => array(null),

'1' => array(null),

...

'11' => array(null),

)

)

这是一个数组,其数量与< media:content>的数量一样多.标签,但每个项目都是空的.我需要获取每个项目的url属性.我做错了什么并得到一个空阵列?

解决方法:

标签实际上是空的:

^^

$rss = simplexml_load_file($url, null, LIBXML_NOCDATA);

$namespaces = $rss->getNamespaces(true);

$media_content = $rss->channel->item[0]->children($namespaces['media']);

foreach($media_content->group->content as $i){

var_dump((string)$i->attributes()->url);

}

我怀疑问题来自JSON技巧. SimpleXML动态生成所有类和属性(它们不是常规PHP类),这意味着您不能完全依赖标准PHP功能,如print_r()或json_encode().如果你在上面的循环中插入它,这会得到说明:

var_dump($i, json_encode($i), (string)$i->attributes()->url);

object(SimpleXMLElement)#2 (0) {

}

string(2) "{}"

string(91) "http://i2.cdn.turner.com/cnnnext/dam/assets/161115120658-trump-putin-t1-tease-super-169.jpg"

...

标签:php,tags,simplexml,rss,media

来源: https://codeday.me/bug/20190627/1308595.html

php rss xml,php – 如何使用simplexml解析RSS中的标记相关推荐

  1. php rss xml,php 一个完全面向对象的RSS/XML类的简单示例

    这篇文章主要为大家详细介绍了php 一个完全面向对象的RSS/XML类的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 经测试代码如下: ...

  2. RSS Can:使用 Golang Rod 解析浏览器中动态渲染的内容:(四)

    第四篇文章,来聊聊 Golang 生态中如何"遥控"浏览器,更简单.可靠的使用基于 CDP (Chrome DevTools Protocol)协议的浏览器作为容器,获取诸如微博. ...

  3. Java解析XML数据(三)——强大的XOM之simple-xml解析

    前面已经了解了DOM和SAX两种解析方式,通过对比知道了DOM解析的核心是建立树模型,而SAX解析的核心是通过回调机制来实现.本篇文章将继续带大家用一种更为强大更为简单的工具来解析XML数据.我这里给 ...

  4. Java解析Rss(三)

    2019独角兽企业重金招聘Python工程师标准>>> package com.ninemax.application.rss;import java.net.URL; import ...

  5. 分析rss/xml结构附带源码【原创】

    Author:张继飞 <?xml version="1.0" encoding="UTF-8"?> <rss> <channel& ...

  6. rss spring 接口_spring mvc: rss(xml)输出

    准备: rss包插件 Rome 库及其依赖项rome-utils,jdom和slf4j com.rometools rome 1.8.0 com.rometools rome-utils 1.8.0 ...

  7. C++学习之第八天-解析RSS文件

    1.使用tinyXml2解析RSS文件,并生成一个网页库pagelib.dat. tinyXml2 -- https://github.com/leethomason/tinyxml2 rss     ...

  8. php解析rss,PHP解析RSS的方法

    这篇文章主要介绍了PHP解析RSS的方法,实例分析了php解析RSS的原理与XML文件的操作技巧,需要的朋友可以参考下 本文实例讲述了PHP解析RSS的方法.分享给大家供大家参考.具体如下:php代码 ...

  9. tinyxml2解析rss文件

    参考资料:xml -> rss -> tinyxml -> regex xml:XML 教程 rss:RSS 教程 tinyxml2:TinyXML-2: TinyXML-2 reg ...

最新文章

  1. 基于Live555的多路视频流的流媒体服务器框架
  2. Android之解决ScrollView嵌套RecycleView导致滑动冲突或者显示不全的问题
  3. SQL SERVER 中 GO 的用法2
  4. JUNIT Hello World
  5. 没有到主机的路由_网络基础知识:TCP协议之跟踪路由
  6. URL传递中文、Ajax传递中文,Java如何编码如何解决乱码
  7. 2021 年全球知名开源项目
  8. MacBook2016在SSD上安装Win To Go(成功经验分享)
  9. CVPR 新规严禁审稿期间公开宣传论文,可发 arXiv,LeCun:疯了吧!
  10. CA数字证书包含哪些文件?如何查看SSL证书信息?
  11. 浏览器第二节:TCP协议:如何保证页面文件能被完整送达浏览器
  12. cherokee php,安装Cherokee与PHP5和MySQL支持在Mandriva 2009.1
  13. 动态规划-击爆气球 Burst Balloons
  14. c语言有理数字符形式,C语言设计实现抽象数据类型有理数基本操作包括有理数的加法,减法,乘法,除法,以及求有理数的分子,分...
  15. D3D9 简单图形的绘制以及显示
  16. Ask and Answer
  17. 认识微型计算机 ppt,认识微型计算机(PPT课件).ppt
  18. 采购工作内容是什么?如何成为一名优秀的采购?
  19. 定时任务与系统定时任务
  20. Redis缓存一致性问题解决方案

热门文章

  1. 力扣: 88. 合并两个有序数组
  2. c++中的向量容器(vector)
  3. 关于 \8 为56问题解答
  4. 新颖的自我介绍_简短有创意的自我介绍
  5. python 内部函数传参_python中函数传参详解
  6. 为什么 MySQL的常用引擎都默认使用 B+ 树作为索引?
  7. 有关于Java Map,应该掌握的8个问题
  8. 04-JDBC学习手册:JDBC中使用transaction(事务)编程和Javabean定义
  9. apache 版本_Apache Hudi 0.5.1版本重磅发布
  10. (Oracle学习笔记) Oracle体系结构