XmlSerializer反序列化器返回xmlns错误

时间:2013-09-12 20:01:03

标签: xml c#-4.0 deserialization xml-deserialization

这是我尝试反序列化的XML。我一直得到“resultConfig xmlns =''>不被期待。”}

我厌倦了关于此问题的stackoverflow上的所有解决方案没有真正起作用。提前谢谢。

<?xml version="1.0" encoding="UTF-8" ?>
<resultConfig>
    <folders>
        <folder>
            <location>C:\</location>
        </folder>
        <folder>
            <location>C:\Temp</location>
        </folder>
    </folders>
    <resultClasses>
        <resultClass name="ScdExctractSqlXYZ" type="CSV">
            <resultTypeQuery>REGEX</resultTypeQuery>
            <testIdQuery>REGEX</testIdQuery>
        </resultClass>  
        <resultClass name="SubNotification" type="XML">     
            <resultTypeQuery>XPATH</resultTypeQuery>
            <testIdQuery>XPATH</testIdQuery>
            <transformation>something.xsl</transformation>      
        </resultClass>
    </resultClasses>
</resultConfig>

我将我的类对象声明为:

namespace TestGen
{

    public class ResultClasses
    {
        [XmlRoot("resultConfig")]
        public class resultConfig
        {
            [XmlArray("folders")]
            [XmlArrayItem("folder")]
            public List<folder> folders { get; set; }

            [XmlArray("resultClasses")]
            [XmlArrayItem("resultClass")]
            public List<resultClass> classes { get; set; }
        }

        public class folder
        {
            [XmlArray("location")]
            public string location { get; set; }
        }

        public class resultClass
        {
            [XmlAttribute("name")]
            public string name { get; set; }
            [XmlAttribute("type")]
            public string type { get; set; }


            [XmlArrayItem("resultTypeQuery")]
            public string resultTypeQuery { get; set; }
            [XmlArrayItem("testIdQuery")]
            public string testIdQuery { get; set; }
            [XmlArrayItem("transformation")]
            public string transformation { get; set; }

        }       

    }

}

然后我以这种方式调用我的反序列化器:

 using (FileStream reader = new FileStream(@"C:\ResultConfig.xml", FileMode.Open, FileAccess.Read))
 {

     XmlSerializer serializer = new XmlSerializer(typeof(ResultClasses));
     var ei = serializer.Deserialize(reader);
 }

1 个答案:

答案 0 :(得分:0)

外部课程ResultClasses有什么用?如果您删除它并使用new XmlSerializer(typeof(resultConfig))它应该有效。