【问题标题】:Read XML attribute with Simple XML使用简单 XML 读取 XML 属性
【发布时间】:2012-08-13 13:14:35
【问题描述】:

我想从 RSS 提要中读取带有简单 XML 的特定属性。

项目示例:

<item>
     <category>3500</category>
     <category>20</category>
     <category>17</category>
     <title>Blabla</title>
     <description>Blabla</description>
     <content:encoded>Blabla</content:encoded>
     <link>http://...</link>
     <guid isPermaLink="false">http://...</guid>
     <media:content url="http://image.jpg" medium="image">
              <media:title type="html">caption needed</media:title>
     </media:content>
     <pubDate>Mon, 13 Aug 2012 11:40:53 +0200</pubDate>
</item>

我想阅读 media:content 中的 url。

阅读我使用的其他标签:$xml->channel->item[$i]->title

要读取我尝试的媒体 url 属性:$xml->channel->item[$i]->media->attributes()->url

但这只是返回 NULL。它与 :content 相关,它是一个命名空间。

【问题讨论】:

    标签: php simplexml


    【解决方案1】:

    元素的名称实际上是content,而不是media(它只是一个任意前缀,应该与命名空间相关联以形成良好的XML)。与 encoded 相同,而不是 content 是元素名称。

    $xml->item[0]->children('whatever-the-namespace-tied-to-media-is')->content->attributes()->url
    

    【讨论】:

    • 感谢布雷特的评论。
    • 其实我刚刚找到了解决方案。 $namespace = $xml-&gt;channel-&gt;item[$i]-&gt;children("http://search.yahoo.com/mrss/"); $img = $namespace-&gt;{"content"}-&gt;attributes()-&gt;url;我对孩子和属性有点困惑。也许这个解决方案对其他人也有用。
    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 2022-01-13
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    相关资源
    最近更新 更多