4

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

我的测试用例涉及为KML 版本 2.2.0 模式生成 C# 代码并尝试使用它加载示例 KML 文件

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

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

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

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

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

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

谢谢你的帮助

4

1 回答 1

2

尝试在 XSD2Code 参数中将 ChoiceIdentifier 值设置为“数组”而不是“列表”。

于 2015-04-29T10:32:16.503 回答