我在Silverlight应用程序中有一个XML文件,其中包含应用程序设置,并将在运行时进行编辑。到目前为止,我已经能够很好地反序列化应用程序,但无法保存我对XDocument所做的任何更改。这是我正在使用的代码。
private XElement _targetRoot;
private XDocument _doc;
private Stream _stream;
private void LoadXmlFile()
{
WebClient xmlClient = new WebClient();
xmlClient.OpenReadCompleted += XMLFileLoaded;
xmlClient.OpenReadAsync(new Uri(_fileName, UriKind.Relative));
}
private void XMLFileLoaded(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error != null)
{
return;
}
_stream = e.Result;
_doc = XDocument.Load(_stream);
deserializeScenarioList(_doc.Root.Element("scenes"));
}
然后,每次我尝试从节点上删除元素,然后通过
保存_doc.save(_stream)
我收到System.NotSupportedException。
答案 0 :(得分:1)
流是单向流,在这种情况下是从服务器到(Silverlight)客户端的流。
为了将更改保存回服务器,Web应用程序必须公开一个端点,Silverlight控件可以调用该端点来传回文件。如果要将ASMX Web服务添加到Web应用程序(WCF端点和REST端点当然也可以),这是一种简单的方法。