You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP解析带子节点的XML:提取RSS中media节点的媒体URL

解析方案说明

media:前缀是Media RSS扩展的命名空间节点,解析前必须注册对应命名空间标识http://search.yahoo.com/mrss/,否则常规XML节点选择方法无法匹配到带前缀的元素。

Python标准库实现示例
import xml.etree.ElementTree as ET

# 配置Media RSS命名空间映射
ns_config = {"media": "http://search.yahoo.com/mrss/"}

# 加载解析RSS内容(支持本地文件、HTTP请求返回的XML文本)
xml_tree = ET.parse("rss_source.xml")
root = xml_tree.getroot()

# 遍历所有RSS条目
for entry in root.findall(".//item"):
    # 已掌握的link、title读取逻辑
    entry_link = entry.findtext("link")
    entry_title = entry.findtext("title")

    # 读取media:group下所有media:content节点的URL
    content_img_urls = []
    media_group_node = entry.find("media:group", ns_config)
    if media_group_node:
        for content_node in media_group_node.findall("media:content", ns_config):
            # 可按需通过属性筛选,比如判断isDefault="true"取默认主图
            img_url = content_node.get("url")
            content_img_urls.append(img_url)

    # 读取media:thumbnail节点的URL
    thumbnail_node = entry.find("media:thumbnail", ns_config)
    thumbnail_url = thumbnail_node.get("url") if thumbnail_node else None

    # 后续自行处理提取到的字段即可
其他常见解析场景注意事项
  • 使用专门的RSS解析库(如Python的feedparser)时,不需要手动注册命名空间,媒体资源地址会直接挂载在条目对象的media_content、media_thumbnail属性上,直接读取属性值即可
  • 使用PHP SimpleXML解析时,需要先调用registerXPathNamespace('media', 'http://search.yahoo.com/mrss/')注册命名空间,再通过XPath匹配对应节点
  • 使用浏览器端JavaScript DOMParser解析时,调用getElementsByTagNameNS方法,传入MRSS命名空间URI作为第一个参数,节点名(去掉media:前缀)作为第二个参数,即可匹配到对应媒体节点

内容的提问来源于stack exchange,提问作者techie2604

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 23:45:54