使用xsd工具从XML Schema生成C#类失败的问题求助
解决XSD生成C#类时类型未声明的问题
你遇到的核心问题是:你的invoiceApi.xsd引用了来自http://schemas.nav.gov.hu/OSA/1.0/data命名空间的多个自定义类型,但这些类型的定义并不在你当前处理的这个XSD文件中——你漏掉了对应的依赖XSD文件。
问题分析
从你执行命令后的警告信息可以看到,所有未声明的类型(比如TaxpayerIdType、SimpleText50NotBlankType等)都属于同一个外部命名空间,这说明invoiceApi.xsd通过<xs:import>或者<xs:include>标签引用了这个命名空间下的类型定义,但你没有把包含这些定义的XSD文件提供给xsd工具,导致工具无法解析这些类型。
解决方案
- 找到依赖的XSD文件:首先确认和
invoiceApi.xsd配套的、定义了http://schemas.nav.gov.hu/OSA/1.0/data命名空间类型的XSD文件(通常会是类似data.xsd、osa_data.xsd这类命名的文件,可能和主XSD在同一目录,或者需要从该API的官方渠道获取)。 - 修改xsd命令,包含所有相关XSD文件:在执行命令时,把主XSD和依赖XSD一起作为参数传入,比如:
xsd invoiceApi.xsd data.xsd /classes
(这里假设data.xsd是包含缺失类型定义的文件,实际文件名请根据你的情况调整)
这样xsd工具就能完整解析所有引用的类型,顺利生成对应的C#类文件。
你执行的命令及输出
执行的命令:
xsd invoiceApi.xsd /classes
输出信息:
c:\temp\test>xsd invoiceApi.xsd /classes Microsoft (R) XML架构或数据类型支持工具 [Microsoft (R) .NET Framework, Version 4.6.1055.0] Copyright (C) Microsoft Corporation. 保留所有权利。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:TaxpayerIdType"未声明。第1154行,位置8。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第1016行,位置8。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:TaxpayerIdType"未声明。第982行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText1024NotBlankType"未声明。第956行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText512NotBlankType"未声明。第930行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:CountryCodeType"未声明。第862行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:PostalCodeType"未声明。第868行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText255NotBlankType"未声明。第874行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText255NotBlankType"未声明。第880行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第886行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第892行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第898行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第904行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第910行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第916行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第812行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText15NotBlankType"未声明。第824行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText512NotBlankType"未声明。第830行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText200NotBlankType"未声明。第836行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:CountryCodeType"未声明。第842行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第848行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第729行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText1024NotBlankType"未声明。第735行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:LineNumberType"未声明。第741行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:SimpleText50NotBlankType"未声明。第709行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:InvoiceReferenceType"未声明。第669行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:TaxpayerIdType"未声明。第557行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:InvoiceCategoryType"未声明。第563行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:PaymentMethodType"未声明。第569行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:InvoiceAppearanceType"未声明。第575行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:CurrencyType"未声明。第599行,位置5。 架构验证警告: 类型"http://schemas.nav.gov.hu/OSA/1.0/data:MonetaryType"未声明。
内容的提问来源于stack exchange,提问作者Tommehh
相关产品推荐
相关产品推荐

