xml序列化 - c# xml用法



读取嵌入式XML文件c# (4)

  1. 将文件添加到项目中。
  2. 将“Bu​​ild Action”属性设置为“Embedded Resource”。
  3. 以这种方式访问​​它:

    GetType().Module.Assembly.GetManifestResourceStream("namespace.folder.file.ext")
    

请注意,资源名称字符串是文件的名称,包括扩展名,前面是项目的默认名称空间。 如果资源位于文件夹中,则还必须将其包含在字符串中。

(来自http://www.dotnet247.com/247reference/msgs/1/5704.aspx ,但我经常使用它)

如何从嵌入式XML文件中读取 - 一个属于ac#项目的XML文件? 我已经在我的项目中添加了一个XML文件,我想从中读取它。 我希望XML文件能够与项目一起编译,因为我不希望它成为用户可以看到的资源。

任何想法?


Answer #1
  1. 确保XML文件是.csproj项目的一部分。 (如果您可以在解决方案资源管理器中看到它,那就很好。)

  2. 将XML文件的“Build Action”属性设置为“Embedded Resource”。

  3. 使用以下代码在运行时检索文件内容:

    public string GetResourceTextFile(string filename)
    {
        string result = string.Empty;
    
        using (Stream stream = this.GetType().Assembly.
                   GetManifestResourceStream("assembly.folder."+filename))
        {
            using (StreamReader sr = new StreamReader(stream))
            {
                result = sr.ReadToEnd();
            }
        }
        return result;
    }
    

每当您想要阅读文件内容时,只需使用即可

string fileContents = GetResourceTextFile("myXmlDoc.xml");

请注意,“assembly.folder”应替换为包含资源文件的项目名称和文件夹。

更新

实际上, assembly.folder应该被命名空间替换,在该命名空间中,默认情况下在与XML文件相同的文件夹中创建的类。 这通常是defaultNamespace.folder0.folder1.folder2.....


Answer #2

您可以使用Reflector(从http://www.red-gate.com/products/reflector/免费)查找嵌入式XML文件的路径。

然后,这只是一个问题

Assembly a = typeof(Assembly.Namespace.Class).Assembly;

Stream s = a.GetManifestResourceStream("Assembly.Namespace.Path.To.File.xml");
XmlDocument mappingFile = new XmlDocument();
mappingFile.Load(s);
s.Close();

Answer #3

您还可以将XML文件添加为资源,然后使用Resources.YourXMLFilesResourceName (作为字符串,即使用StringReader)来处理其内容。





xml