2013-02-13 80 views
7

xsd.exe工具为给定的xsd文件生成类。它遵循命名类型的模式。 例如,我们可以在xsd.exe工具生成的类中控制类型名称

<Students> 
    <Student Name="A" RollNo="1" Address="Some Address"> 
    <Department Id="20" Name="CSE"/> 
    </Student> 
</Students> 

xsd.exe /c Students.xsd 

Students.cs文件已生成。如果我们看到元素的类型

Element  Type Name 
Students Students 
Student  StudentsStudent 
Department StudentsStudentDepartment 

它通过在父元素名称为子元素前加前缀来生成类型。 我们可以控制这个名字吗?我需要类型名称与元素名称相同。 学生=>学生,系=>系

由于提前

回答

16

一般情况下,一个人不能使用XSD.EXE时自定义生成的类的名称 - 不同于现有的机制在其他地方,例如为一个JAXB用户通过自定义的JAXB绑定文件。

但是,对于xsd.exe,生成的类名取决于创作风格。你所描述的,是时产生的创作风格是否符合特定的“俄罗斯套娃”,即如下:

<?xml version="1.0" encoding="utf-8"?> 
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)--> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="Students"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="Student"> 
      <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element name="Department"> 
       <xsd:complexType> 
        <xsd:attribute name="Id" type="xsd:unsignedByte" use="required" /> 
        <xsd:attribute name="Name" type="xsd:string" use="required" /> 
       </xsd:complexType> 
       </xsd:element> 
      </xsd:sequence> 
      <xsd:attribute name="Name" type="xsd:string" use="required" /> 
      <xsd:attribute name="RollNo" type="xsd:unsignedByte" use="required" /> 
      <xsd:attribute name="Address" type="xsd:string" use="required" /> 
      </xsd:complexType> 
     </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

如果你改变它的风格不同的东西(这被称为百叶窗):

<?xml version="1.0" encoding="utf-8"?> 
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)--> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="Students" type="Students"/> 
    <xsd:complexType name="Students"> 
     <xsd:sequence> 
      <xsd:element name="Student" type="Student"/> 
     </xsd:sequence> 
    </xsd:complexType> 
    <xsd:complexType name="Student"> 
     <xsd:sequence> 
      <xsd:element name="Department" type="Department"/> 
     </xsd:sequence> 
     <xsd:attribute name="Name" type="xsd:string" use="required"/> 
     <xsd:attribute name="RollNo" type="xsd:unsignedByte" use="required"/> 
     <xsd:attribute name="Address" type="xsd:string" use="required"/> 
    </xsd:complexType> 
    <xsd:complexType name="Department"> 
     <xsd:attribute name="Id" type="xsd:unsignedByte" use="required"/> 
     <xsd:attribute name="Name" type="xsd:string" use="required"/> 
    </xsd:complexType> 
</xsd:schema> 
产生

你会得到这些类:

enter image description here

相关问题