2013-02-13 15 views
7

lo strumento xsd.exe genera classi per un determinato file xsd. Segue un modello per nominare il tipo. Per esempio, viene generato il fileÈ possibile controllare il nome del tipo nella classe generata dallo strumento 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. Se vediamo il tipo di elementi

Element  Type Name 
Students Students 
Student  StudentsStudent 
Department StudentsStudentDepartment 

Genera il tipo anteponendo il nome dell'elemento padre se l'elemento è figlio. Possiamo controllare questo nome? Ho bisogno del nome del tipo come del nome dell'elemento. Student => Studente, Dipartimento => Dipartimento

Grazie in anticipo

risposta

16

In generale, non si può personalizzare i nomi delle classi generate quando si utilizza xsd.exe - a differenza di meccanismi disponibili altrove, per esempio un utente JAXB tramite il file di bind JAXB personalizzato.

Tuttavia, per xsd.exe i nomi di classe generati dipendono dallo stile di creazione. Quello che hai descritto, viene generato quando lo stile di authoring è conforme alla "Russian Doll", cioè come di seguito:

<?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> 

Se si cambia il suo stile a qualcosa di diverso (questo è chiamato una veneziana):

<?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> 

Sarai sempre queste classi generate:

enter image description here

Problemi correlati