用XSD2Code生成的代码加载XML

本文关键字:代码 加载 XML XSD2Code | 更新日期: 2023-09-27 18:17:37

我遇到了麻烦,获得由XSD2Code生成的代码,以加载一个据称有效的xml文件。

我的测试用例包括为KML 2.2.0版本模式生成c#代码,并尝试用它加载样例KML文件。

测试过程中出现的异常如下:

系统。InvalidOperationException:有一个反映类型"XSDTest.KmlType"的错误。
——>系统。InvalidOperationException:反映属性'NetworkLinkControl'的错误。
——>系统。InvalidOperationException:有一个反映类型"XSDTest.NetworkLinkControlType"的错误。
——>系统。InvalidOperationException:反映属性"Update"的错误。
——>系统。InvalidOperationException:有一个反映类型"XSDTest.UpdateType"的错误。
——>系统。InvalidOperationException:反映属性"Items"的错误。
——>系统。InvalidOperationException:有一个反映类型"XSDTest.DeleteType"的错误。
——>系统。InvalidOperationException:反映属性"Items"的错误。
——>系统。InvalidOperationException:有一个反映类型"XSDTest.PlacemarkType"的错误。
——>系统。InvalidOperationException:反映属性"author"的错误。
——>系统。InvalidOperationException:有一个反映类型"XSDTest.atomPersonConstruct"的错误。
——>系统。InvalidOperationException:反映属性"Items"的错误。
——>系统。InvalidOperationException:选择标识符"ItemsElementName"的类型与"Items"的类型不一致。请使用System.Collections.Generic.List ' 1[[XSDTest]的数组。ItemsChoiceType, XSDTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] .

这在创建XML序列化器时发生,在自动生成的代码:

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

当使用XSD2Code创建代码时,我只将3个值从默认值false更改为true: Serialization。启用,序列化。

启用编码和序列化。generatexmlatattributes。

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

谢谢你的帮助

用XSD2Code生成的代码加载XML

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