【问题标题】:XSD to XML ConverterXSD 到 XML 转换器
【发布时间】:2020-07-22 23:29:13
【问题描述】:

我正在尝试将 XSD 文件转换为其相应的 XML 文档。使用 IntelliJ 的内置工具使这很容易,但出现了问题。它似乎可以正确地创建所有内容,这是一个大型 XSD,但仔细检查后,会发现一些元素丢失了。我使用的特定 XSD 来自这里:https://www.iata.org/contentassets/76a4543036794d59ad747f3d80bb9792/19.2-schemas-edist.zip。文件名为 IATAAirShoppingRS.xsd。
这是文件的sn-p。在 CarrierOffersSummary 之后,应该有更多的元素被创建和扩展,但只有 cmets。

<iata:TotalAmount CurCode="token">1000.00</iata:TotalAmount>
          </iata:TotalPrice>
          <!--Optional:-->
          <iata:ValidatingCarrierCode>token</iata:ValidatingCarrierCode>
          <!--Optional:-->
          <iata:WebAddressURL>http://www.corp.com/pater/regina</iata:WebAddressURL>
        </iata:ALaCarteOffer>
        <!--Optional:-->
        <iata:CarrierOffersSummary>
          <!--Optional:-->
          <iata:HighestOfferPrice>
            <!--Optional:-->
            <iata:LoyaltyUnitAmount CurCode="token">1000.00</iata:LoyaltyUnitAmount>
            <!--Optional:-->
            <iata:LoyaltyUnitName>token</iata:LoyaltyUnitName>
            <!--Optional:-->
            <iata:TotalAmount CurCode="token">1000.00</iata:TotalAmount>
          </iata:HighestOfferPrice>
          <!--Optional:-->
          <!--Optional:-->
        </iata:CarrierOffersSummary>
        <!--Zero or more repetitions:-->
        <!--Zero or more repetitions:-->
      </iata:CarrierOffers>
    </iata:OffersGroup>
    <!--Optional:-->
    <!--Zero or more repetitions:-->
    <!--Zero or more repetitions:-->
    <!--Optional:-->
    <!--Zero or more repetitions:-->

感谢您提供的任何帮助。

【问题讨论】:

  • 提供没有 XML 样本的 XSD 是 B2B 通信中最糟糕的做法之一。人们没有在每个 XSD 中包含示例 XML,这真是太可惜了。这就像发送一个蓝图并告诉客户自己构建它,当它出错时我们会告诉你。
  • 示例通常很有用,但我认为您的主张过于宽泛。有时一个 XSD,如果经过精心设计,只允许有效和有意义的文档(这两个不一样)。

标签: xml intellij-idea xsd converters


【解决方案1】:

我假设您指的是“零或更多重复”cmets?

我没有使用 IntelliJ 的工具,但 Eclipse XML 示例文档生成器具有控制输出的设置,包括是否为可选 (minOccurs="0") 元素生成任何内容。我建议你查看 IntelliJ 工具的文档,看看它是否有类似的设置。 不过……

我正在尝试将 XSD 文件转换为其对应的 XML 文档。

对于大多数 XSD,尤其是大型和复杂的 XSD,没有这样的东西。任何重要的 XSD 都描述了整个 XML 文档系列。如果您使用此工具生成单元测试数据,那么要非常小心功能覆盖率。您不应该相信任何自动化工具会为您的测试生成有用的数据 - 这需要了解您项目的业务需求。

【讨论】:

  • 我认为可能是这样,但在其他地方它会正确生成带有该注释的元素: stringstring 我没有使用xml来测试。我将它用作 api 调用的模板。该工具是 IntelliJ 自带的,似乎没有办法配置它。
  • 我认为生成器生成的示例数据没有任何问题。为什么你认为它是错误的?
  • 数据没有错。我不关心它生成的样本数据,我关心的是 Xml 文档。我正在使用该 xml 文档作为模板来替换其中的值并进行soap api调用。它生成了 2600 行,但缺少一些 XML 元素,所以我认为存在错误,或者某些设置限制了它正在处理的数据量。考虑到这是一个 Intellij 默认插件,我看不到任何可以调整的配置。
  • 我看不出生成器生成的 XML 文档有什么问题。它始终如一地为强制性元素生成示例标签(minOccurs >=1)。它正在为可选的元素生成注释(minOccurs=0)。这不是错误,它只是生成器的工作方式,对我来说似乎完全合理。我认为你应该重新考虑你解决这个问题的方法(如果你在问题中解释了你的目标会有所帮助)
  • 感谢您对此进行调查。您是否碰巧使用 Intellij 并使用我提供的 XSD 来生成 XML?如果你这样做了,你没有看到缺失的元素吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 2012-08-31
  • 2013-09-08
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多