Есть ли способ создать SyndicationFeed из строки?
Я пытаюсь воссоздать объект 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.
Любая помощь или указатели, которые вы можете дать, были бы наиболее полезными.
Спасибо роберто
1 ответ
Решение
Поскольку StringReader расширяет TextReader, это должно работать:
TextReader tr = new StringReader(xmlString);
XmlReader xmlReader = XmlReader.Create(tr);
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);