2011-01-04 3 views
0

Ich muss einige Klassen definieren, die xsd-Definitionen eines Drittanbieters implementieren. Das xsd ist ziemlich komplex, mit einer Menge von Entregungen. Ich habe versucht, mit xsd.exe und xsd2code etwas Zeit zu sparen. Die generierten Klassen berücksichtigen jedoch nicht das Attribut minoccurs = 0 und ordnen schlechtesten Typen als String einem enum (int) zu. Zum Beispiel wird der Typ unten als eine Aufzählung mit demselben Namen zuzugeordnet:Generierung von serialisierbaren CS-Klassen von xsd: welches Tool verwenden?

<xsd:element name="CodiceFornitura"> 
      <xsd:simpleType> 
       <xsd:restriction base="xsd:string"> 
        <xsd:enumeration value="IMP00"/> 
       </xsd:restriction> 
      </xsd:simpleType> 
    </xsd:element> 

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")] 
    [System.SerializableAttribute()] 
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] 
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] 
    public enum CodiceFornitura 
    { 
     /// <remarks/> 
     IMP00, 
    } 

Das andere Problem ist, dass einige Elemente migth oder nicht serialisiert werden könnte: zum Beispiel, wenn ich eine Art von Dokument zu senden (zB OriginalInvoiceUpdate), ich muss ein Stück xml hinzufügen, das angibt, welcher report ersetzt werden muss, andernfalls muss dieser Teil von xml weggelassen werden.

xsd2code hat zwei Eigenschaften, um Code zu generieren: GenerateShouldSerialize und GeneratePropertyNameSpecified. Das Setzen von "1" auf "True" hat keine Auswirkungen. Wenn Sie "All" auf "All" setzen, werden die Eigenschaften für alle Klassenmemrys nicht nur für thats mit minoccurs = 0 generiert.

So sind die Fragen: 1. soll ich die generierten Quellen ändern, um meine Bedürfnisse widerzuspiegeln, gibt es einige Konfigurationen, die ich mit xsd.exe oder xsd2code vermisse? 2. Was XmlSerializer in das XML für enums schreiben wird: der Enumerationswert ("1") oder die Zeichenfolgendarstellung des Wertes (IMP00)? 3. gibt es andere Werkzeuge, um Quellen von xsd zu bauen?

danken Ihnen im Voraus für jede Hilfe

+0

Sie können, natürlich, das XML-Schema in den Speicher gelesen, und Ihren eigenen Code generieren. –

Antwort

0

einen Blick auf svcutil haben. Es hat Optionen zum Generieren von Klassen aus xsd und ist viel konfigurierbarer als xsd.exe.

Verwandte Themen