我很擅长使用visual studio xsd.exe工具从类生成xsd架构,我在这里有一个示例场景,为简单起见而减少了。
以下是我的课程样本
public class quality
{
....
public List<Application> Applications { get; set; }
}
public class Application
{
...
public int LOC { get; set; }
public Int32 DebtInDollars { get; set; }
public Int32 DebtDensity { get; set; }
...
}
xsd生成的架构是“平坦的”可以这么说......就像这样
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="quality">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Applications" type="ArrayOfApplication" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfApplication">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Application" nillable="true" type="Application" />
</xs:sequence>
</xs:complexType>
<xs:element name="Application" nillable="true" type="Application" />
<xs:complexType name="Application">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="LOC" type="xs:int" />
<xs:element minOccurs="1" maxOccurs="1" name="DebtInDollars" type="xs:int" />
<xs:element minOccurs="1" maxOccurs="1" name="DebtDensity" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>
我想要生成的更多是层次结构,正如我在其他一些模式中看到的那样,对我来说更有意义....
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="quality">
<xs:sequence>
<xs:element name="Applications">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Application">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="LOC" type="xs:int" />
<xs:element minOccurs="1" maxOccurs="1" name="DebtInDollars" type="xs:int" />
<xs:element minOccurs="1" maxOccurs="1" name="DebtDensity" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
无论如何要实现这一目标吗?
由于
答案 0 :(得分:0)
查看是否可以通过使用属性进行装饰来控制XSD生成,如以下MSDN文章中所述。我知道它是用于序列化的,但XSD中生成的模式定义了System.Xml.Serialization.XmlSerializer使用的XML格式。
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(v=vs.110).aspx
我没试过,但可能值得一试。