2011-08-03 30 views
0

我有一個Silverlight應用程序中的XML文件,其中包含應用程序設置,並將在運行時進行編輯。到目前爲止,我已經能夠反序列化到應用程序中,但不能保存我對XDocument所做的任何更改。這是我正在使用的代碼。System.NotSupportedException XDocument.Save

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

請不要用「XML:」等標籤來標題,這就是我們在[SO]上的標籤。 –

回答

1

流是一個單向流,在這種情況下是從服務器到(Silverlight)客戶端的流。

爲了將更改保存回服務器,Web應用程序必須公開一個終端,Silverlight控件可以調用該終端來傳回文件。如果要將ASMX Web服務添加到Web應用程序(當然也可以使用WCF端點和REST端點),則可以使用這種簡單的方法。

+0

你想要更改去哪裏?您將需要服務器上的端點(Web服務,REST端點等),以便接收更新後的文件並將其放在需要的位置。 –

+0

理想情況下,我想只是在文件上面寫下來,因爲在運行時期間每次更改都會很小(並且只有應用程序「管理員」纔會擁有此功能。)現在,該文件位於Silverlight .web項目的ClientBin文件夾中。 –

相關問題