【发布时间】: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