xsd警告和错误转换为c#类

时间:2014-01-29 03:39:46

标签: c# .net xml xsd

我正在尝试将以下XML标准转换为C#.NET类:

https://services.mesa.org/ResourceLibrary/ShowResource/0f47758b-60f0-40c6-a71b-fa7b2363fb3a

我已经下载了包(https://services.mesa.org/ResourceLibrary/ShowResource/0f47758b-60f0-40c6-a71b-fa7b2363fb3a),解压缩了已填充的内容,并将Schema文件移动到一个空的Schema文件夹中。

我让他们打开Visual Studio 2012开发人员提示并发出:

xsd AllSchemas.xsd /c

之后发生了几次schema validation warning reference to undeclared attribute group'(翻译)警告:

Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.17929]
Copyright (C) Microsoft Corporation. All rights reserved.
Schema validation warning: Referˆncia a grupo de modelo nÆo declarado 'http://www.mesa.org/xml/B2MML-V0600-AllExtensions:EquipmentAssetMapping'. Line 404, position 14.
Schema validation warning: Referˆncia a grupo de modelo nÆo declarado 'http://www.mesa.org/xml/B2MML-V0600-AllExtensions:HierarchyScope'. Line 473, position 14.
Schema validation warning: Referˆncia a grupo de modelo nÆo declarado 'http://www.mesa.org/xml/B2MML-V0600-AllExtensions:Location'. Line 525, position 14.
.
.
.

我需要帮助才能找到一种方法来改变这一点。我试图从所有文件中删除“http://www.mesa.org/xml/'引用,但没有成功。

这是我第一次使用这种XML文件,所以我请求帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

对于xsd.exe来说,你所经历的事情并非闻所未闻......从.NET 1.0版开始就是这样......

我的猜测是由于xsd.exe中的错误而发生这种情况,这很可能与.NET中架构加载的工作方式有关。

您的架构集有效;然而,你指向的标准模块化的有点复杂的方式对于内置的.NET解析器来说似乎太过分了;更糟糕的是,变色龙模式也被使用,这进一步使解析器的工作复杂化。

这就是你正在处理的事情(突出显示的节点显示CoreComponents - 变色龙 - 它是连接的节点;绿色边缘表示xsd:include,另一个是xsd:import):

enter image description here

这就是你在这个集合中真正拥有的东西(这意味着实际上只有两个名称空间):

enter image description here

仅使用两个文件,xsd.exe可以正常运行。

你很可能不得不重构这个集合;我认为最简单(也最安全)是在没有xsd:include的情况下完成它。最安全的,因为根据我的经验,有许多支持XSD的主流产品(微软有一个例子here用于SQL Server 2012),它不支持xsd:include。

答案 1 :(得分:1)

这对我有用:

> xsd.exe B2MML-V0600-AllExtensions.xsd .\AllSchemas.xsd /c

Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'AllSchemas.cs'.