【问题标题】:XSD utility to convert XML to XSD and extra unwanted fields用于将 XML 转换为 XSD 和额外不需要的字段的 XSD 实用程序
【发布时间】:2015-08-20 09:47:51
【问题描述】:

我已经使用 XSD 实用程序来转换我拥有的 XML 块:

<parentsets>
<set name="aaa">
<GroupSet name="GS1" >
  <Group>Group1</Group>
  <Group>Group2</Group>
  <Group>Group3</Group>
</GroupSet>
<GroupSet name="GS2" >
  <Group>Group4</Group>
  <Group>Group5</Group>
  <Group>Group6</Group>
</GroupSet>
</set>
</parentsets>

我运行创建 XSD 文件的 XSD 实用程序。然后我再次运行该实用程序以将我的 XSD 转换为 C# 清晰模型 (.cs)。

问题在于,很多我认为的“噪音”正在被创造出来。首先,XSD 实用程序似乎第一次为带有标签“itemsField”的 XSD 文件创建了一些额外的字段。

还有一些只能被描述为重复的分支,例如父节点“pollingsets”在下面再次创建,标签为“pollingsetsSet”。其他节点(例如“Group”)变为“GroupField”。总而言之,生成的 XSD 是一团糟。

我不确定我在这里遗漏了什么,也许在针对 XSD 实用程序运行之前需要 XML 中的一些设置?

我的目标是创建一个与我的 XML 模式匹配的模型。然后我加载 XML 文档并将其传递给我的相应模型,该模型由某些业务逻辑使用。因此,为什么我尝试使用相同的 XSD 实用程序先转换为 XSD,然后再转换为 .cs 文件。

谢谢。


更新

XSD 示例:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema id="parentsets" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
     <xs:element name="parentsets" msdata:IsDataSet="true" msdata:Locale="en-US">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="set">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="GroupSet" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Group" nillable="true" minOccurs="0" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:simpleContent msdata:ColumnName="Group_Text" msdata:Ordinal="0">
                          <xs:extension base="xs:string">
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="name" type="xs:string" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" />
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
    </xs:schema>

【问题讨论】:

  • 发布(部分)中间.XSD 文件。该工具是否完全理解您的示例 XML?我怀疑它会/可以使用那些name="..." 属性。
  • 嗨 Henk,我已经用 XSD 中的示例 sn-p 更新了我的问题。 :o)
  • 您发布的是 .cs,而不是 .xsd。但实际上,没有名为 GS1 或 aaa 的字段/属性。你强制生成器添加额外的层。
  • 糟糕,我已经在文本编辑器中手动打开它,因为 VS 一直显示它的可视化图表。我又更新了一次。

标签: c# xml asp.net-mvc visual-studio xsd


【解决方案1】:

我决定使用通过 google 搜索找到的免费在线 XML 到 XSD 转换器之一,这似乎有助于清理 XSD 实用程序放入的一些噪音/混乱。

【讨论】:

    猜你喜欢
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多