gpt4 book ai didi

.net - 如何确定 .NET SyndicationFeed(RSS 与 Atom)的提要类型?

转载 作者:行者123 更新时间:2023-12-04 17:28:20 25 4
gpt4 key购买 nike

是否可以从System.ServiceModel.Syndication.SyndicationFeed确定例如正在读取什么类型的 SyndicationFeed?如果我只有 url (blahblah.com/feed),它可能是 rss 或 atom,并且取决于我想要做一件事或另一件事的类型。

有没有一种简单的方法可以在不解析文档并查找特定字符的情况下进行判断?

最佳答案

老问题,但它值得一个答案。

有一种相对简单的方法可以确定您是否有 RSS 或 Atom 提要。它确实需要阅读或尝试阅读文档。

public SyndicationFeed GetSyndicationFeedData(string urlFeedLocation)
{
XmlReaderSettings settings = new XmlReaderSettings
{
IgnoreWhitespace = true,
CheckCharacters = true,
CloseInput = true,
IgnoreComments = true,
IgnoreProcessingInstructions = true,
//DtdProcessing = DtdProcessing.Prohibit // .NET 4.0 option
};

if (String.IsNullOrEmpty(urlFeedLocation))
return null;

using (XmlReader reader = XmlReader.Create(urlFeedLocation, settings))
{
if (reader.ReadState == ReadState.Initial)
reader.MoveToContent();

// now try reading...

Atom10FeedFormatter atom = new Atom10FeedFormatter();
// try to read it as an atom feed
if (atom.CanRead(reader))
{
atom.ReadFrom(reader);
return atom.Feed;
}

Rss20FeedFormatter rss = new Rss20FeedFormatter();
// try reading it as an rss feed
if (rss.CanRead(reader))
{
rss.ReadFrom(reader);
return rss.Feed;
}

// neither?
return null;
}
}

关于.net - 如何确定 .NET SyndicationFeed(RSS 与 Atom)的提要类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com