2014-07-23 54 views
1

我有一個用戶控件,因爲我嵌入了一個xml文件來存儲電子郵件。現在我編譯它並創建了一個dll。現在我在Windows窗體中使用這個用戶控件,並且需要單擊按鈕將數據寫入該嵌入的xml文件中。我很容易通過使用如何寫入嵌入在dll中的xml文件中的數據

var doc = XDocument.Parse(Resource.EmailHistory); 
var email=doc.Root.Elements().Select(x => x.Element("Email")); 
foreach (string item in email) 
{ 
     textBox1.Text+= item; 
} 

訪問嵌入式xml文件中的數據,但在寫入嵌入式xml文件時遇到了問題。請幫我解決一下這個。任何幫助,將不勝感激。

Xml代碼

<?xml version="1.0" encoding="utf-8" ?> 
<root> 
    <Email> 
     Hello 
    </Email> 
    <Email> 
     There 
    </Email> 
</root> 
+1

_「將數據寫入嵌入式xml文件「_ - 你不能。 –

+0

這和WCF有什麼關係? – Tim

+0

爲什麼不將電子郵件寫入除嵌入式XML文件之外的本地XML文件?有沒有任何安全問題? – ssett

回答

2

不能將數據寫入到一個嵌入的XML文件,因爲它是嵌入在DLL(或可執行文件)的資源。

您可以通過創建一個完整的新資源,然後使用UpdateResource來代替。這聽起來並不簡單,您必須執行以下所有操作(有關詳細信息,請參閱MSDN上的Updating Resources):

  1. 使用LoadLibrary加載可執行文件Hand.exe。
  2. 使用FindResource和LoadResource來定位並加載對話框資源。
  3. 使用LockResource檢索指向對話框資源數據的指針。
  4. 使用BeginUpdateResource打開Foot.exe的更新句柄。
  5. 使用UpdateResource將對話框資源從Hand.exe複製到Foot.exe。
  6. 使用EndUpdateResource完成更新。

不得不這樣做只是爲了更新一個XML文件應該告訴你,你的方式是錯誤的,而且嵌入式資源不是正確的方法。 (例如,外部文件或數據庫(這將允許存儲更多信息,並且可以進行排序,過濾和搜索)將是更好的解決方案。)