如何在嵌入在dll中的xml文件中写入数据

时间:2014-07-23 19:06:30

标签: c# xml resourcemanager

我有一个用户控件,我嵌入了一个xml文件来存储电子邮件。现在我编译它并制作了一个dll。现在我在Windows窗体中使用此用户控件,我需要在单击按钮时在该嵌入式xml文件中写入数据。我可以使用

轻松访问嵌入式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 version="1.0" encoding="utf-8" ?>
<root>
   <Email>
       Hello
   </Email>
   <Email>
       There
   </Email>
</root>

1 个答案:

答案 0 :(得分: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完成更新。
  7. 为了更新XML文件而必须做的这么多工作应该告诉你,你以错误的方式处理它,并且嵌入式资源不是正确的方法。 (例如,外部文件或数据库(允许存储更多信息,并且可以进行排序,过滤和搜索)将是一个更好的解决方案。)