3 Stimmen

Gibt es eine Möglichkeit, die Bindung des <choice>-Elements durch xsd.exe außer Kraft zu setzen?

Ich habe die folgenden Elemente in meinem Schema:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="optimizeModelBase">
    <xs:attribute name="name" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="riskModel">
    <xs:complexContent>
      <xs:extension base="optimizeModelBase">
        <xs:attribute name="type" type="xs:string" use="required"/>        
      </xs:extension>      
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="fullCovariance">
    <xs:complexContent>
      <xs:extension base="optimizeModelBase">
        <xs:attribute name="fromDate" type="xs:date" use="required"/>
        <xs:attribute name="toDate" type="xs:date" use="required"/>
        <xs:attribute name="windowSize" type="xs:int" use="required"/>
      </xs:extension>
    </xs:complexContent>    
  </xs:complexType>

In meinem Hauptschemakörper verwende ich ein Element, um eine 1-of-Situation anzugeben:

<xs:choice id="RiskModelParameter">
  <xs:element name="RiskModel" type="riskModel"/>
  <xs:element name="FullCovariance" type="fullCovariance"/>
</xs:choice>

Wenn ich xsd.exe ausführe, wird der folgende Code angezeigt:

    [System.Xml.Serialization.XmlElementAttribute("FullCovariance",
    typeof(fullCovariance))]
    [System.Xml.Serialization.XmlElementAttribute("RiskModel", 
    typeof(riskModel))]
    public optimizeModelBase Item 
    {
        get 
        {
           return this.itemField;
        } 
        set 
        {
            this.itemField = value;
        }
    }

Das Problem ist, dass das ID-Tag des Elements ignoriert wird und xsd.exe die Eigenschaft "Item" willkürlich benennt. Ich muss zugeben, es ist kein großes Problem, aber es fängt an, mich zu ärgern. Besonders ärgerlich ist, dass xsd.exe, wenn ich weitere Elemente auf derselben Ebene habe, diese als "Item1", "Item2" usw. bindet.

Weiß jemand, ob es möglich ist, die no xsd.exe meine Auswahlelemente als "Item" benennen lassen und stattdessen meine eigenen Eigenschaftsnamen eingeben können?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X