在使用xsd.exe ref
时使用attributeGroup
时遇到问题。我用它来生成C#类。
这是我的XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xs:attributeGroup name="PersonBaseAttributes">
<xs:attribute name="Name" type="xs:string" use="required" /> <!-- Missing in .CS -->
<xs:attribute name="Born" type="xs:dateTime" use="required" /> <!-- Missing in .CS -->
</xs:attributeGroup>
<xs:attributeGroup name="SalesAttributes">
<xs:attributeGroup ref="PersonBaseAttributes" />
<xs:attribute name="Sales" type="xs:int" use="required" />
</xs:attributeGroup>
<xs:attributeGroup name="BossAttributes">
<xs:attributeGroup ref="PersonBaseAttributes" />
<xs:attribute name="Department" type="xs:string" use="required" />
</xs:attributeGroup>
<xs:element name="Boss" nillable="true" type="BossPerson" />
<xs:element name="Sales" nillable="true" type="SalesPerson" />
<xs:complexType name="SalesPerson">
<xs:attributeGroup ref="SalesAttributes" />
</xs:complexType>
<xs:complexType name="BossPerson">
<xs:attributeGroup ref="BossAttributes" />
</xs:complexType>
</xs:schema>
它生成这两个类:
public partial class SalesPerson {
private int salesField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public int Sales {
get {
return this.salesField;
}
set {
this.salesField = value;
}
}
}
public partial class BossPerson {
private string departmentField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Department {
get {
return this.departmentField;
}
set {
this.departmentField = value;
}
}
}
生成的类缺少来自Name
的字段Born
和PersonBaseAttributes
。 我的XSD不正确或者xsd.exe不知道如何处理它?</ strong>
如果 xsd.exe 无法处理,还有其他办法吗?
我这样执行:
xsd.exe foo.xsd /c
答案 0 :(得分:1)
XML Schema对我来说是正确的,没有属性Boss
和Sales
的元素Name
或Born
对模式无效(例如,oXygen需要随架构提供时的这些属性。)
请注意,生成的代码由部分类组成。该工具是否可以在其他地方生成其他属性?
答案 1 :(得分:1)
我有同样的问题。我认为xsd.exe不支持嵌套的attributeGroups: https://social.msdn.microsoft.com/Forums/en-US/707c8a47-a29f-4262-b052-ac66dc99d604/nested-xml-attribute-groups?forum=asmxandxml