C#读取Resources文件夹中的XML文件

时间:2012-09-26 06:39:42

标签: c# xml

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

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”上有一个错误:“路径中的字符非法。”你们知道什么是错的吗?

3 个答案:

答案 0 :(得分:1)

XmlTextReader构造函数需要流或字符串。需要字符串的那个需要一个url(或路径)。您正在传递资源的值。您需要将字符串值转换为流。

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

reader = new XmlTextReader(new StringReader(MyProject.Properties.Resources.ID02)); 

答案 1 :(得分:1)

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

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

要:

StringReader s = new StringReader(MyProject.Properties.Resources.XmlFile);
XmlTextReader r = new XmlTextReader(s);

答案 2 :(得分:0)

要从资源中读取XML文件,请按照此answer

中的说明使用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
}

有关XDocument的更多信息,请点击此处。