Silverlight 4.0 保存XDocument问题
我正在加载我的文档,如下所示:Silverlight 4.0 保存XDocument问题,silverlight-4.0,linq-to-xml,Silverlight 4.0,Linq To Xml,我正在加载我的文档,如下所示: WebClient client = new WebClient(); client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); client.OpenReadAsync(new Uri("Rolls.xml", UriKind.Relative)); 然后在阅读完成后: XDocument doc = XDo
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.OpenReadAsync(new Uri("Rolls.xml", UriKind.Relative));
然后在阅读完成后:
XDocument doc = XDocument.Load(XmlReader.Create(e.Result));
using (Stream stream = e.Result)
{
{
foreach (var roll in _rollsToAddStudentTo)
{
doc.Element("rolls").Add(new XElement("rollid", roll));
}
doc.Save(stream);
}
}
问题是当它到达保存时,我得到了错误
“不支持指定的方法。”
非常感谢您的帮助。
干杯
谢谢杰霍夫
那么,如何将文档合并到该异步方法中呢
foreach (var roll in _rollsToAddStudentTo)
{
doc.Element("rolls").Add(new XElement("rollid", roll));
}
WebClient client = new WebClient();
client.OpenWriteCompleted += new OpenWriteCompletedEventHandler(client_OpenWriteCompleted);
client.OpenWriteAsync(new Uri("Rolls.xml", UriKind.Relative));
我已通过将逻辑更改为以下方式解决了此问题
using (IsolatedStorageFile isoStore =
IsolatedStorageFile.GetUserStoreForApplication())
{
// Create new file
using (IsolatedStorageFileStream isoStream =
new IsolatedStorageFileStream("Rolls.xml",
FileMode.Create, isoStore))
{
// Write to the Isolated Storage for the user.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
// Create an XmlWriter.
using (XmlWriter writer = XmlWriter.Create(isoStream, settings))
{
writer.WriteStartDocument();
writer.WriteStartElement("Rolls");
foreach (var roll in _rollsToAddStudentTo)
{
writer.WriteStartElement("roll");
writer.WriteAttributeString("rollid", roll);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndDocument();
}
}
}
您试图保存XDocument的流是
只读的
。因为它是作为参数传递给注册到事件OpenReadCompleted
的方法client\u OpenReadCompleted
的流
如果要通过WebClient将XDocument保存回来,需要调用-methods之一