我有一个奇怪的问题。我有这种数据类型,用于存储从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等正常工作,但不适用于Name。为什么不?对我来说,它们看起来都一样。我想念什么?(我还没有设计这个,所以我不能百分百确定这是如何工作的)
编辑:根据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" />
...
这对任何人有帮助吗?
经过大量的调试和测试,我意识到文件路径已被另一种方法覆盖。一旦我解决了问题,一切都会正常。因此,问题从来就不是xml读取,而是另一个更改路径<。<的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句