我无法获取由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,所以如果有更合适的东西,请随时提出建议。
感谢您的帮助
答案 0 :(得分:2)
尝试将ChoiceIdentifier值设置为' array'而不是列出'在XSD2Code参数中。