2

我正在尝试从本地存储的 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 也始终为空。

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

谢谢,罗伯托

4

1 回答 1

6

由于 StringReader 扩展了 TextReader,这应该可以工作:

TextReader tr = new StringReader(xmlString);
XmlReader xmlReader = XmlReader.Create(tr);
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
于 2010-04-21T21:09:49.463 回答