gpt4 book ai didi

c# - XSD.exe/dataset 没有从我的 xsd 文件创建枚举

转载 作者:行者123 更新时间:2023-11-30 21:24:12 26 4
gpt4 key购买 nike

我创建了一个 XSD 并在该 .xsd 文件之上运行了 XSD.exe。似乎我的仅限于枚举值的简单类型没有在输出的 .cs 文件中生成为枚举。

比如我的xsd是这样的:

<xs:element name="ItemList" nillable="false">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="Item" type="ItemType" minOccurs="1" maxOccurs="unbounded" nillable="false">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="ItemType">
<xs:sequence maxOccurs="1" minOccurs="1">
<!-- other complex types, etc... -->
</xs:sequence>
<xs:attribute name="Market" type="MarketType" use="required">
</xs:attribute>
<xs:attribute name="Category" type="CategoryType" use="required" />
</xs:complexType>
<xs:simpleType name="CategoryType">
<xs:restriction base="xs:string">
<xs:enumeration value="Mild" />
<xs:enumeration value="Hot" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MarketType">
<xs:restriction base="xs:string">
<xs:enumeration value="Weak" />
<xs:enumeration value="Strong" />
</xs:restriction>
</xs:simpleType>

当我运行 XSD.exe 时,输出的 .cs 文件不应该为我的每个简单类型都有一个 xml 枚举属性吗? This link says that it should .也许我做错了什么?在我的 .cs 文件中没有看到枚举。

如果您需要更多信息,请告诉我我可以提供什么。

谢谢。

更新:

似乎我在使用 XSD.exe 创建数据集(/d 开关),而我本应创建类(/c 开关)。在我设置它生成一个类后,它工作正常。

最佳答案

我不知道你的情况发生了什么 - 我将你的代码复制到 enum.xsd 中然后跑了xsd.exe在上面-这是结果:

//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.4016
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System.Xml.Serialization;

//
// This source code was auto-generated by xsd, Version=2.0.50727.3038.
//


/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class ItemList {

private ItemType[] itemField;

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("Item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public ItemType[] Item {
get {
return this.itemField;
}
set {
this.itemField = value;
}
}
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class ItemType {

private MarketType marketField;

private CategoryType categoryField;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public MarketType Market {
get {
return this.marketField;
}
set {
this.marketField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public CategoryType Category {
get {
return this.categoryField;
}
set {
this.categoryField = value;
}
}
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
public enum MarketType {

/// <remarks/>
Weak,

/// <remarks/>
Strong,
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
public enum CategoryType {

/// <remarks/>
Mild,

/// <remarks/>
Hot,
}

我肯定得到了两个枚举 CategoryTypeMarketType .

我所做的只是将您的 XSD 代码放入 <xsl:schema>标签:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="TheParentNode" xmlns:xs="http://www.w3.org/2001/XMLSchema">
..... (inserted your code here) .......
</xs:schema>

然后我在上面运行 XSD.EXE:

xsd.exe  enum.xsd  /c

它创建了 enum.cs上面显示的文件。

你有什么版本的 XSD.EXE?您使用的是什么版本的 .NET?

马克

关于c# - XSD.exe/dataset 没有从我的 xsd 文件创建枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1289964/

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