Frage

Ich arbeite daran, eine XML -Datei zu erhalten, um ein XSD -Schema zu validieren, und habe Probleme mit den Validierungen. Jedes Mal, wenn ich validiere, bekomme ich Fehler sagen

"Schemas Validitätsfehler: Element '{http://services.website.com/programResponsexpopulation': '' ist kein gültiger Wert des Atomtyps 'XS: Double'."

Ich glaube, dieser Fehler geschieht, weil ich in diesem Feld einen Nullcharakter habe, der so angezeigt wird:
<Harvpop> < /Harvpop>

Um dies zu lösen, habe ich versucht, das Attribut nillable = "True" für die Elemente zu verwenden, damit sie null sein können, aber immer noch als leer auftauchen. Dies scheint die einzige Lösung zu sein, funktioniert aber überhaupt nicht. Ich bekomme immer noch die Fehler.

Ich benutze derzeit XMLMate für meine Validierungen und habe es auch doppelt überprüft, ob es mehrere Online -Verifungsfaktoren wieder überprüft habe. Der Fehler bleibt immer noch bestehen. Alle Vorschläge wären großartig.

<?xml version="1.0" encoding="UTF-8"?>

<xsd:element name="Reports" type="tns:ReportsType"/>

<xsd:complexType name="ReportsType">
    <xsd:sequence>
        <xsd:element name="Report" type="tns:ReportType" maxOccurs="unbounded" minOccurs="0"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ReportType">
    <xsd:sequence>
        <xsd:element name="Id" nillable="true"/>
        <xsd:element name="Brand" type="xsd:string"/>
        <xsd:element name="Address" type="xsd:string"/>
        <xsd:element name="City" type="xsd:string"/>
        <xsd:element name="State" type="xsd:string"/>
        <xsd:element name="ZipCode" type="xsd:string"/>
        <xsd:element name="Entry" type="tns:EntryType" maxOccurs="unbounded" minOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="EntryType">
    <xsd:sequence>
        <xsd:element name="RM" nillable="true" type="xsd:double"/>
        <xsd:element name="Pop" nillable="true" type="xsd:double"/>
        <xsd:element name="Wt" nillable="true" type="xsd:double"/>
        <xsd:element name="EntryId" type="xsd:int"/>
    </xsd:sequence>
</xsd:complexType>

War es hilfreich?

Lösung

Ein Knoten wie < HarvPop>< /HarvPop> Sagen Sie, dass der Wert da ist und dass der Wert eine leere Zeichenfolge ist.

Basierend auf den Informationen auf dieser Seite W3.org: http://www.w3.org/tr/xmlschema-0/#nils

Das nillable Attribut wird so verwendet:

Definition:<xsd:element name="shipDate" type="xsd:date" nillable="true"/>

Verwendungszweck:<shipDate xsi:nil="true"></shipDate>

dh du musst ausdrücklich angeben, dass der Wert null ist.

Die andere Möglichkeit, dies zu tun, besteht darin, Minoccurs = 0 zu sagen, um den Wert fehlen zu lassen.

Andere Tipps

Eine Möglichkeit, wie ich festgestellt habe, die das Problem mit minimalem Code auch behoben hat, bestand darin, das Attribut von Standard = "0" zum XSD hinzuzufügen. Auf diese Weise können Sie als Double validieren, ohne sich mit NIL zu befassen, indem Sie NIL standardmäßig mit einer Nummer befassen.

Fehler -Deserialisierungs -XML -Dokument mit stark typisiertem XSD

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top