我正在尝试从本地存储的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也始终为空。
您可以提供的任何帮助或指示都是最有帮助的。
谢谢, 罗伯特
答案 0 :(得分:6)
由于StringReader扩展了TextReader,因此它应该可以工作:
TextReader tr = new StringReader(xmlString);
XmlReader xmlReader = XmlReader.Create(tr);
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);