【问题标题】:Why do some generated C# class properties not match the XSD attributes?为什么某些生成的 C# 类属性与 XSD 属性不匹配?
【发布时间】:2009-11-25 16:26:36
【问题描述】:

我正在从 OTA(开放旅游联盟)XSD 文件生成 C# 类。你可以download the XSD file from here

我在 Visual Studio 命令提示符中使用以下命令创建 C# 类:

xsd FS_OTA_VehLocDetailsNotifRQ.xsd /classes /nologo

OTA_VehLocDetailsNotifRQ.POS[0].RequestorID 内,我希望找到ID 属性。然而,XSD.exe 工具生成的属性名为ID_Context

您能解释一下它为什么这样做,以及我是否能够强制它生成正确的 (ID) 属性名称?

请不要建议我编辑生成的文件,因为那不是可维护的方法。

接受答案后进一步编辑:

更仔细地查看 XSD 并将引用替换为其属性组定义,可以在其属性组中看到 ID 属性:

<xs:attributeGroup name="UniqueID_Group">
  <xs:attribute name="URL" type="xs:anyURI" />
  <xs:attribute name="Type" type="OTA_CodeType" use="required" />
  <xs:attribute name="Instance" type="StringLength1to32" />
  <xs:attributeGroup name="ID_Group">
    <xs:attribute name="ID" type="StringLength1to32" use="required" />
  </xs:attributeGroup>
  <xs:attribute name="ID_Context" type="StringLength1to32" use="optional" />
</xs:attributeGroup>

我认为这是 XSD 工具中的一个错误。

【问题讨论】:

    标签: c# xsd xsd.exe


    【解决方案1】:

    让我们看看....

    • RequestorID 包含UniqueID_Type 类型的复杂内容
    • UniqueID_Type 包含对一组名为 UniqueID_Group 的属性的引用
    • UniqueID_Group 是一个属性组,包含以下属性:
      • URL
      • Type
      • Instance
      • ID_Group 的引用
      • ID_Context

    我猜 C# 代码“ID_Context”是由于该属性组中的“ID_CONtext”属性而生成的……我看不出有什么问题。

    但我确实同意 - ID_Group 应该包含一个“ID”属性,但似乎 xsd.exe 已经放弃了对 ID_Group 的嵌套引用 - 无论出于何种原因......它似乎确实是一个问题其他人也在其他​​情况下偶然发现。看起来 xsd.exe 无法处理此任务:-(

    也许还可以看看这个讨论:

    http://groups.google.com/group/OTA-Impl-Forum/browse_thread/thread/fa476cfb6e1fa7f7

    更新:我还尝试了来自 WCF(.NET 3.0 及更高版本)的svcutil.exe - 也没有运气:-(

    错误:键入“日期或时间或日期时间类型” 在命名空间中 'http://www.opentravel.org/OTA/2003/05' 无法导入。 带有 ** 的简单类型 不支持&lt;union&gt; 内容。 要么更改架构,以便 类型可以映射到数据协定类型 或使用 ImportXmlTyp e 或使用 不同的序列化器。

    【讨论】:

    • 哇,我错过了那一步;做得好。正如您所说,跳过ID_Group 是问题所在。可惜它的属性。
    【解决方案2】:

    有点晚了,但我想我可能找到了解决您问题的方法(现在也是我的问题):

    http://www.opentravelcommunityforum.com/forum/viewtopic.php?f=8&t=19

    我还没有尝试,但我即将尝试。

    【讨论】:

    • 我认为这不能解决这个特定问题,但如果可以,请在此处分享修复。谢谢!
    • 是的,它对我有用。我有同样的问题,通过嵌套我可以解决它!
    猜你喜欢
    • 2010-11-11
    • 1970-01-01
    • 2017-12-11
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多