我有点不合时宜。我使用 xsd.exe 从 xml 文件创建 xsd 架构,然后从该 xsd 创建 C# 类。这一切似乎都很好。
目前我只是想让 XML 反序列化。如果我最初用于构建类的文件与我正在反序列化的文件相同。这是我的代码:
String xsdPath=@"C:\Users\tol56881\Documents\dnd4e.xsd";
String xmlPath=@"C:\Users\tol56881\Documents\dnd4e.xml";
String xsdNamespace="";
//Validation stuff
XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None);
XmlValidatingReader vr = new XmlValidatingReader(xmlPath, XmlNodeType.Element, context);
vr.ValidationType = ValidationType.Schema;
vr.Schemas.Add(xsdNamespace, xsdPath);
while (vr.Read()) ;
//Actually reading the file
TextReader tr = new StreamReader(xmlPath);
D20Character character = (D20Character)(new XmlSerializer(typeof(D20Character))).Deserialize(tr);
它编译得很好,但是当我尝试运行它时,我得到了一个针对四个不同对象重复的错误。我在下面给出了一个示例,更改了对象的名称。
Unable to generate a temporary class (result=1).
error CS0030: Cannot convert type 'Namespace.ObjectName[]' to 'Namespace.ObjectName'
error CS0029: Cannot implicitly convert type 'Namespace.ObjectName' to 'Namespace.ObjectName[]'
所以看起来程序正试图从数组到对象再回到数组,但我不太确定。自动生成的类代码是一团乱麻,很难通过。我希望这里可能缺少一些简单的东西。
谢谢!