我无法获取由 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,所以如果有更合适的东西,请随时提出建议。
谢谢你的帮助