无法从 XSD 文件创建 c# 类

Posted

技术标签:

【中文标题】无法从 XSD 文件创建 c# 类【英文标题】:Cannot create c# classes from XSD file 【发布时间】:2021-01-21 17:06:26 【问题描述】:

我有一些 XSD 架构文件,可以在 here 找到。它是名为 CR-27-EFK-xsd 的底部 zip 文件。当我尝试使用 Xsd2Code 为 ef15.xsd 文件创建类时,它给了我

错误:类型'http://www.icisnet.gr/emcs/v1.03/types:DateType' 不是 声明

如果我将其设置为自定义工具 MsDataSetGenerator 并将自定义工具运行到 XSD,这与我得到的错误相同。

如果我尝试从命令运行 xsd 工具 xsd ef15.xsd /c 它给了我一个错误

警告:无法验证架构。类生成可能会失败或产生不正确的结果。

错误:为架构“ef15”生成类时出错。

Λείπει ο τύπος δεδομένων(翻译自希腊缺失数据类型)'http://www.icisnet.gr/emcs/v1.03/tms:HeaderType'。

我在 *** 和其他网站的许多答案中发现,我必须将所有文件包含在同一目录中并在 xsd 命令中指定它们,所以我尝试了很多这样的组合

xsd ef15.xsd tms.xsd types.xsd doc.xsd /c

xsd doc.xsd types.xsd tms.xsd tcl.xsd ef15.xsd /c

还有许多其他组合,但我总是出错

错误:Το 'xsd' είναι ένα πρόθημα που δεν έχει δηλωθεί。 Γραμμή 313, θέση 8.(不知道怎么翻译成英文)

注意:在 ef15.xsd 中作为模式导入的所有文件与 ef15.xsd 位于同一文件夹中。 此外,所有需要的文件都在 ZIP 文件中。 doc.xsd、types.xsd、tml.xsd、tcl.xsd

有人可以帮帮我吗? xsd 文件有问题还是我做错了什么?

【问题讨论】:

【参考方案1】:

xsd 有问题。我已经下载了 zip 并尝试将 ef15.xsd 打开到 Altova XMLspy 中,但它在导入的 types.xsd 上失败了。

问题出在 types.xsd 的这一部分

<!--==========================================================-->
    <!--===                 CarbonDioxideEmissionsType         ===-->
    <!--==========================================================-->
    <xs:simpleType name="CarbonDioxideEmissionsType">
        <xs:annotation>
            <xs:documentation>
                <doc:description value="Carbon Dioxide Emissions"/>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:token">
            <xs:maxLength value="3"/>
            <xsd:pattern value="[0-9]1,3|-"/>
        </xs:restriction>
    </xs:simpleType>

&lt;xsd:pattern value="[0-9]1,3|-"/&gt; 未知,应改为&lt;xs:pattern value="[0-9]1,3|-"/&gt;

在此更改之后,EF15.xsd 在 altova 中有效。

【讨论】:

感谢这是创作的问题。

以上是关于无法从 XSD 文件创建 c# 类的主要内容,如果未能解决你的问题,请参考以下文章

使用 XSD.exe 的多个版本 C# 类/XSD

从 GPX 文件创建 XSD 文件

如何从 XSD 创建 BQ 模式

从 C# 类代码生成 xsd 注释和文档标签

多个 xsd 文件的 xsd.exe 类生成器问题

从JAXB的XSD创建XML文件