无法从xml中读取一个属性

时间:2014-06-27 13:58:17

标签: c# xml

我有一个奇怪的问题。我有这个数据类型存储从xml文件读取的信息。 课程(重要部分)如下所示:

 [Serializable]
    public class myClass
    {
        #region XML Properties
        [XmlAttribute("Name")]
        public string Name;

        [XmlAttribute("prop1")]
        public string prop1;

        [XmlAttribute("prop2")]
        public string prop2;

        [XmlAttribute("prop3")]
        public char prop3;

        ...etc...
        public myClassList readXml(string xml_file)
        {
            myClassList myList = new myClassList();

            XmlSerializer mySerializer = new XmlSerializer(typeof(myClassList));
            FileStream fs = new FileStream(xml_file, FileMode.Open);
            myList = (myClassList)mySerializer.Deserialize(fs);
            fs.Close();
            return myList;
        }
    }

myClassList-class看起来像这样:

[XmlRoot("myClassList")]
    public class myClassList : CollectionBase
    {
        public virtual void Add(myClass c)
        {
            this.List.Add(c);
        }

        public virtual myClass this[int Index]
        {
            get
            {
                return (myClass)this.List[Index];
            }
        }
    }

xml文件的短片:

<myClassList>
    <myClass Name="test" prop1="test2" prop3="blabla" ...[etc] />
</myClassList>

然后我尝试使用它:

myClassList test = myClass.readXml("C:\\test\\file.xml");
System.Diagnostics.Trace.WriteLine("name"+test[0].Name);
System.Diagnostics.Trace.WriteLine("name"+test[0].prop1);
System.Diagnostics.Trace.WriteLine("name"+test[0].prop2);
System.Diagnostics.Trace.WriteLine("name"+test[0].prop3);

使用prop1,prop2,prop3等一切正常但名称不适用。 为什么不?对我来说,他们看起来都一样。我错过了什么? (我没有设计这个,所以我不能100%确定它是如何工作的)

修改 正如SoMoS所建议的,我尝试使用xsd.exe(我第一次使用,所以我可能做错了。)我使用命令xsd myFile.xml /o:E:\temp并获得了一个新文件。在新文件中,它看起来像这样:

...
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="prop1" type="xs:string" />
<xs:attribute name="prop2" type="xs:string" />
<xs:attribute name="prop3" type="xs:string" />
...

这对任何人都有帮助吗?

2 个答案:

答案 0 :(得分:1)

我会使用xsd.exe工具生成XML类阅读器,以便您发现差异。

点击此处:XSD.exe

答案 1 :(得分:0)

经过大量的调试和测试后,我发现文件路径被其他方法覆盖了。一旦我解决了这个问题,一切正常。所以问题从来都不是xml读取,而是另一种改变路径的方法&lt;。&lt;