1

我有一个用户控件,我嵌入了一个 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>
4

1 回答 1

2

您不能将数据写入嵌入式 XML 文件,因为它是嵌入在 DLL(或可执行文件)中的资源。

您可以通过创建一个全新的资源,然后使用UpdateResource来替换它。这并不像听起来那么简单。您必须执行以下所有操作(有关详细信息,请参阅 MSDN 上的更新资源):

  1. 使用 LoadLibrary 加载可执行文件 Hand.exe。
  2. 使用 FindResource 和 LoadResource 来定位和加载对话框资源。
  3. 使用 LockResource 检索指向对话框资源数据的指针。
  4. 使用 BeginUpdateResource 打开 Foot.exe 的更新句柄。
  5. 使用 UpdateResource 将对话框资源从 Hand.exe 复制到 Foot.exe。
  6. 使用 EndUpdateResource 完成更新。

仅仅为了更新一个 XML 文件就必须做这么多的工作,这应该告诉您您正在以错误的方式进行操作,并且嵌入式资源不是正确的方法。(例如,外部文件或数据库(可以存储更多信息,并且可以进行排序、过滤和搜索)将是更好的解决方案。)

于 2014-07-23T21:58:40.147 回答