将 MRSS(媒体)添加到 SyndicateFeed

发布于 2024-08-12 05:50:58 字数 1005 浏览 6 评论 0原文

我有一个联合供稿。 使用 Rss20FeedFormatter 进行序列化时,我得到 xml 中声明的 xmlns:cf 和 xmlns:cfi 命名空间。 媒体元素保持内联。

<media:thumbnail media:url="http://arwen.palantir.za:8080/signate/thumbnail/dXVpZDoxNjlkMzIyOS0zYjk5LTQ2NDctOTc5MS00OTJiYmJmNGM0MTkvUEdTMDkwMC5QREY=" media:width="200" media:height="200" xmlns="http://www.w3.org/2005/Atom" xmlns:a="http://search.yahoo.com/mrss" xmlns:media="http://search.yahoo.com/mrss"></media:thumbnail>

我确信这就是缩略图无法正确显示的原因。 如何添加媒体:缩略图并使其正常工作。我使用的是Windows 7搜索查看,所以它肯定支持缩略图。

我希望在 xml 标头中声明媒体,因为它应该是这样。

这是我的代码:

        item.ElementExtensions.Add(
            new XElement(mrss + "thumbnail",
                new XAttribute(XNamespace.Xmlns + "media", mrss),
                new XAttribute(mrss + "url", url + Convert.ToBase64String(Encoding.ASCII.GetBytes(item.Id))),
                new XAttribute(mrss + "width", 200),
                new XAttribute(mrss + "height", 200)
            ).CreateReader());

I have a Syndication Feed.
When serializing using Rss20FeedFormatter I get xmlns:cf and xmlns:cfi namespaces declared in the xml.
The media element remains inline.

<media:thumbnail media:url="http://arwen.palantir.za:8080/signate/thumbnail/dXVpZDoxNjlkMzIyOS0zYjk5LTQ2NDctOTc5MS00OTJiYmJmNGM0MTkvUEdTMDkwMC5QREY=" media:width="200" media:height="200" xmlns="http://www.w3.org/2005/Atom" xmlns:a="http://search.yahoo.com/mrss" xmlns:media="http://search.yahoo.com/mrss"></media:thumbnail>

I am sure this is why the thumbnails are not displaying correctly.
How do I add media:thumbnail and have it work properly. I am using Windows 7 search to view, so it definitely supports the thumbnail.

I would like the media declared in the xml header as it should be.

This is my code:

        item.ElementExtensions.Add(
            new XElement(mrss + "thumbnail",
                new XAttribute(XNamespace.Xmlns + "media", mrss),
                new XAttribute(mrss + "url", url + Convert.ToBase64String(Encoding.ASCII.GetBytes(item.Id))),
                new XAttribute(mrss + "width", 200),
                new XAttribute(mrss + "height", 200)
            ).CreateReader());

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人疚 2024-08-19 05:50:58

正如 Cragly 所解释的那样,您当然需要添加正确的命名空间,但以下是创建正确的 media:thumbnail 元素的方法:

    XNamespace _yahooMediaNamespace = "http://search.yahoo.com/mrss/";
    // Result is a SyndicationItem
    result.ElementExtensions.Add(
        new SyndicationElementExtension(
            new XElement(
                _yahooMediaNamespace + "thumbnail", 
                new XAttribute("url", "http://www.example.com/image.jpg")
            )
        )
    );

You do certainly need to add the correct namespace as Cragly explains, but here's how to create a proper media:thumbnail element:

    XNamespace _yahooMediaNamespace = "http://search.yahoo.com/mrss/";
    // Result is a SyndicationItem
    result.ElementExtensions.Add(
        new SyndicationElementExtension(
            new XElement(
                _yahooMediaNamespace + "thumbnail", 
                new XAttribute("url", "http://www.example.com/image.jpg")
            )
        )
    );
安稳善良 2024-08-19 05:50:58

我认为这是您只需要在使用提要命名空间之前声明它们的情况。我提供了另一个问题的答案,其中展示了如何声明命名空间,然后在 ElementExtension 中使用它。

I think this is a case of you just needing to declare your feed namespaces before you use them. I provided an answer on another question which shows how to declare the namespace and then use it in an ElementExtension.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文