我正在尝试将以下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文件,所以我请求帮助。
感谢。
答案 0 :(得分:1)
对于xsd.exe来说,你所经历的事情并非闻所未闻......从.NET 1.0版开始就是这样......
我的猜测是由于xsd.exe中的错误而发生这种情况,这很可能与.NET中架构加载的工作方式有关。
您的架构集有效;然而,你指向的标准模块化的有点复杂的方式对于内置的.NET解析器来说似乎太过分了;更糟糕的是,变色龙模式也被使用,这进一步使解析器的工作复杂化。
这就是你正在处理的事情(突出显示的节点显示CoreComponents - 变色龙 - 它是连接的节点;绿色边缘表示xsd:include,另一个是xsd:import):
这就是你在这个集合中真正拥有的东西(这意味着实际上只有两个名称空间):
仅使用两个文件,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'.