C#读取资源文件夹中的XML文件

C#读取资源文件夹中的XML文件,c#,xml,C#,Xml,我正在尝试读取一些xml文件,这些文件包含在我的项目下的Resources文件夹中。下面是我的代码: public void ReadXMLFile(int TFType) { XmlTextReader reader = null; if (TFType == 1) reader = new XmlTextReader(MyProject.Properties.Resources.ID01); else if (TFTy

我正在尝试读取一些xml文件,这些文件包含在我的项目下的Resources文件夹中。下面是我的代码:

public void ReadXMLFile(int TFType)
{
        XmlTextReader reader = null;

        if (TFType == 1)
            reader = new XmlTextReader(MyProject.Properties.Resources.ID01);
        else if (TFType == 2)
            reader = new XmlTextReader(MyProject.Properties.Resources.ID02);


        while (reader.Read())
        {
            if (reader.IsStartElement())
            {
                switch (reader.Name)
                {
                    case "Number":
                   // more coding on the cases.
}

但是当我编译时,在“QP2020E.Properties.Resources.ID01”上有一个错误,上面说:“路径中的非法字符。你们知道怎么回事吗?”XmlTextReader构造函数需要流或字符串。需要字符串的那个需要url(或路径)。您正在将资源的价值传递给它。您需要将字符串值转换为流

要执行此操作,请将其包装在StringReader中(…)


要从资源中读取XML文件,请使用XDocument.Parse,如本文所述

我认为您需要修改代码,使其如下所示:

public void ReadXMLFile(int TFType)
{
        XDocument doc = null;

        if (TFType == 1)
            doc = XDocument.Parse(MyProject.Properties.Resources.ID01);
        else if (TFType == 2)
            doc = XDocument.Parse(MyProject.Properties.Resources.ID02);


        // Now use 'doc' as an XDocument object
}

此处提供了有关的详细信息。

您应该为
XMLTextReader
提供文件路径,而不是文件内容。例如,改变

reader = new XmlTextReader(MyProject.Properties.Resources.ID01);
致:


您从何处获得“QP2020E.Properties.Resources.ID01”?这是您的项目和资源的名称吗?请检查QP2020E.Properties.Resources.ID01返回的内容。我不认为它将是一个路径,XmlTextReader将需要一个文件路径。是的。QP2020E是项目名称。我现在已改为我的项目为通用。是的,Amr。我已将ID01.xml文件放入项目下的Resources文件夹中。这是正确的称呼吗?请看下面我的答案。这里有一个类似的问题我不明白你说的斯科特·鲍德温是什么意思。你能给我举个例子吗?是“reader=StringReader(MyProject.Properties.Resources.ID01)”吗?斯科特·鲍德温,我试过你的答案了。如果我使用您的答案,那么在“reader.Read()”行上会有一个错误:“根级别的数据无效。第1行,位置1。“怎么了?看起来你已经进入了问题的下一个阶段。”。现在您已经成功地读取了xml,但是您正在读取的xml存在一些问题。这篇文章可能会有帮助,我不明白答案。你能给我举个例子吗?阿姆鲁,我试过你的答案,但有一个错误找不到XDocument“”。怎么了?添加对System.Xml.Linq的引用
reader = new XmlTextReader(MyProject.Properties.Resources.ID01);
StringReader s = new StringReader(MyProject.Properties.Resources.XmlFile);
XmlTextReader r = new XmlTextReader(s);