gpt4 book ai didi

xsd - 使用 xsd.exe 生成嵌套类型而不是全局类型

转载 作者:行者123 更新时间:2023-12-04 14:05:04 25 4
gpt4 key购买 nike

在 C# 类中使用 xsd.exe,有​​没有办法生成具有嵌套类型而不是全局类型的 xsd 文件?

我想将这个 xsd 文件与 SSIS - Sql Server Integration Services 一起使用,看起来 SSIS 没有很好地读取我的 xsd。

我想像这样使用嵌套类型生成 xsd:

  <?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Country">
<xs:complexType>
<xs:sequence>
<xs:element name="City">
<xs:complexType>
<xs:sequence>
<xs:element name="CityName" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CoutryName" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

但 xsd.exe 使用全局类型生成此文件,而 SSIS 不读取它。我需要像上面那样手动更改此 xsd。

 <?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Country">
<xs:complexType>
<xs:sequence>
<xs:element name="City" type="City">
</xs:element>
<xs:element name="CoutryName" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="City">
<xs:sequence>
<xs:element name="CityName" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>

有什么建议吗?或者我可以使用的其他工具。

非常感谢。

最佳答案

我将进一步假设“不是很好”意味着您在 XML 源输出中没有看到 CountryName。关于 MSDN 的文档是一本很好的读物,尽管在我看来它未能描述为什么您会遇到您所看到的行为。

我认为这与确定 XML 源输出的方式有关。 SSIS 从 XML 结构中推断出一个数据集;与根元素相对应的顶级实体未映射到输出,因此与其关联的所有属性(在您的情况下为 CountryName)都不会显示。

证明这一点的最简单方法是添加另一个根元素来包装您的国家(相当于拥有一个具有国家类型属性的虚拟“根”类)。

<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="Country"/>
</xs:sequence>
</xs:complexType>
</xs:element>

如果您将上述架构片段添加到您的架构中,您应该会得到预期的结果。一开始我认为这与描述的问题有关 here ;虽然您仍然可以按照上面的 MSDN 链接所述使用该工具可视化数据集,但在您的情况下,您建议的创作风格(基本上是 russian-doll )不能改变结果。

关于xsd - 使用 xsd.exe 生成嵌套类型而不是全局类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915852/

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