有没有办法从String创建SyndicationFeed?

时间:2010-04-21 21:01:05

标签: c# .net linq syndicationfeed

我正在尝试从本地存储的XML数据重新创建SyndicationFeed对象(System.ServiceModel.Syndication)。

如果我使用XMLDocument,这很容易。我会调用LoadXml(string)。

SyndicationFeed只会从XMLReader加载。 XMLReader只接受Stream或其他XMLReader或TextReader。

由于XMLDocument将加载一个字符串,我尝试按如下方式(以扩展方法的形式)执行此操作:

    public static SyndicationFeed ToSyndicationFeed(this XmlDocument document)
    {
        Stream thestream = Stream.Null;
        XmlWriter thewriter = XmlWriter.Create(thestream);

        document.WriteTo(thewriter);

        thewriter.Flush();
        XmlReader thereader = XmlReader.Create(thestream);

        SyndicationFeed thefeed = SyndicationFeed.Load(thereader);

        return thefeed;
    }

我无法让这个工作。即使XMLDocument填充了要加载到SyndicationFeed中的Feed,Stream也始终为空。

您可以提供的任何帮助或指示都是最有帮助的。

谢谢, 罗伯特

1 个答案:

答案 0 :(得分:6)

由于StringReader扩展了TextReader,因此它应该可以工作:

TextReader tr = new StringReader(xmlString);
XmlReader xmlReader = XmlReader.Create(tr);
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);