使用由XSD2Code生成的代码加载XML

时间:2013-06-10 12:51:52

标签: c# .net xsd2code

我无法获取由XSD2Code生成的代码来加载一个假定有效的xml文件。

我的测试用例涉及为KML version 2.2.0 schema生成C#代码并尝试加载sample KML file

此测试期间发生的异常如下:

  

System.InvalidOperationException:反映类型为“XSDTest.KmlType”的错误。
    ----> System.InvalidOperationException:反映属性'NetworkLinkControl'时出错     ----> System.InvalidOperationException:出现反映类型'XSDTest.NetworkLinkControlType'的错误。
    ----> System.InvalidOperationException:反映属性“更新”时出错     ----> System.InvalidOperationException:反映类型为“XSDTest.UpdateType”的错误     ----> System.InvalidOperationException:反映属性'Items'时出错。
    ----> System.InvalidOperationException:反映类型为“XSDTest.DeleteType”的错误     ----> System.InvalidOperationException:反映属性'Items'时出错。
    ----> System.InvalidOperationException:反映类型为“XSDTest.PlacemarkType”的错误     ----> System.InvalidOperationException:反映属性“author”时出错     ----> System.InvalidOperationException:出现反映类型'XSDTest.atomPersonConstruct'的错误。
    ----> System.InvalidOperationException:反映属性'Items'时出错。
    ----> System.InvalidOperationException:选择标识符'ItemsElementName'的类型与'Items'的类型不一致。请使用System.Collections.Generic.List`1 [[XSDTest.ItemsChoiceType,XSDTest,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]的数组。

自动生成的代码中创建XML序列化程序时会发生这种情况:

  

new System.Xml.Serialization.XmlSerializer(typeof(KmlType))

使用XSD2Code创建代码时,我只将3个valeus从其默认值false更改为true:Serialization.Enabled,Serialization.EnableEncoding和Serialization.GenerateXmlAttributes。

就使用C#加载KML而言,我不是在寻找替代方案,但我正在寻找一种从有效模式自动生成C#代码的方法。它不需要是XSD2Code,所以如果有更合适的东西,请随时提出建议。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

尝试将ChoiceIdentifier值设置为' array'而不是列出'在XSD2Code参数中。