2014-07-23 20 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文件应该告诉你,你的方式是错误的,而且嵌入式资源不是正确的方法。 (例如,外部文件或数据库(这将允许存储更多信息,并且可以进行排序,过滤和搜索)将是更好的解决方案。)