Есть ли способ создать SyndicationFeed из строки? - PullRequest
2 голосов
/ 22 апреля 2010

Я пытаюсь воссоздать объект SyndicationFeed (System.ServiceModel.Syndication) из данных XML, которые были сохранены локально.

Если бы я работал с 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.

Любая помощь или указатели, которые вы можете дать, были бы наиболее полезны.

Спасибо, Roberto

1 Ответ

6 голосов
/ 22 апреля 2010

Поскольку StringReader расширяет TextReader, это должно работать:

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