gpt4 book ai didi

c# - 如何将 xsd 转换为具有冗余的 cs? (OTA XML 出版物)

转载 作者:行者123 更新时间:2023-11-30 18:16:00 26 4
gpt4 key购买 nike

我正在尝试创建一个基于 SOAP 1.2 的 C#/WCF 接口(interface),它应该处理 HTNG/OTA 消息。 (酒店通信标准)

可在此处找到此 OTA 标准的发布:Open Travel Alliance - Specifications

此出版物包含一堆 .xsd 文件,这些文件定义了可以通过此类接口(interface)传递的所有类型。例如,要将新预订转移到酒店/系统,您可以使用 OTA_HotelResNotifRQ 消息,该消息可以包含 HotelReservations。 SOAP XML 看起来像这样:

<soapenv:Body>
<OTA_HotelResNotifRQ EchoToken="1474033560.151702" TimeStamp="2016-09-16T06:46:00-08:00" Version="1.001" xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 NeedToGetThisPathFromIdeas/OTA_HotelResNotifRQ.xsd" ResStatus="Modify">
<POS>
...
</POS>
<HotelReservations>
<HotelReservation CreateDateTime="2015-11-15T10:39:01-08:00" ResStatus="Reserved" LastModifyDateTime="2016-09-16T06:46:00-08:00">
<UniqueID Type="14" ID="133121274"/>
<RoomStays>
<RoomStay MarketCode="Other OTA" SourceOfBusiness="OTA">
...
</RoomStay>
</RoomStays>
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRQ>
</soapenv:Body>

问题是有多个消息,因此有多个 .xsd 定义使用相同的元素/类。例如,对于上面提到的 HotelReservations,所有标记的消息都使用它:

enter image description here

所有这些 .xsd 文件都定义了相同的类,如 HotelReservation 或 RoomStay 等,并且还有一个额外的 .xsd(HotelReservation,它不是 RQ 或 RS)定义了这些消息中使用的类型。我的意思是这些模式定义非常非常多余。

当我尝试使用 .NET Framework 中的 xsd.exe 或 WSCF.Blue 从这些文件生成 .cs 类时,我面临着所有重复的类型,例如 HotelReservationType 将由OTA_HotelResRQ.cs,再由 OTA.HotelResNotifRQ.cs,再由 etc。这当然会导致无用的代码和 Visual Studio 疯狂地到处喊“模棱两可的引用”。

如何将这些 .xsd 定义无冗余地转换为 .cs 类,所有类型只定义一次?有没有可以做到这一点的工具,或者 Open Travel Alliance 真的搞砸了他们的出版物,我几乎被搞砸了?

最佳答案

您需要创建一个包含/导入所有您需要的架构文件,然后从中生成代码,查看 Working with multiple XML schemas .

另请查看 Liquid XML Data Binder如果 xsd.exe 没有产生您想要的那种输出。

关于c# - 如何将 xsd 转换为具有冗余的 cs? (OTA XML 出版物),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47229423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com