Question

Je travaille sur l'obtention d'un fichier xml pour valider contre un schéma XSD et je vais avoir des problèmes avec les validations. Chaque fois que je valide je reçois des erreurs disant

"erreur de validité schemas: Element '{http://services.website.com/ProgramResponse}Population': '' est pas une valeur valide du type atomique 'xs:. Double'"

Je crois que cette erreur se produit parce que j'ai un caractère nul dans ce domaine, affiché comme ceci:

Alors, pour résoudre ce que j'ai essayé d'utiliser l'Nillable = « true » pour les éléments afin qu'ils soient en mesure d'être nul, mais voit toujours aussi vide. Cela semble être la seule solution, mais il ne fonctionne pas du tout. Je reçois toujours les erreurs.

J'utilise actuellement XMLMate pour mes Validations et je l'ai vérifié deux fois il agains plusieurs en ligne et les vérificateurs. L'erreur persiste. Toute suggestion sera appréciée.

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

Était-ce utile?

La solution

Un nœud comme < HarvPop>< /HarvPop> est indiquant que la valeur est là et que la valeur de c'est une chaîne vide.

D'après les informations sur cette page w3.org: http: // www. w3.org/TR/xmlschema-0/#Nils

L'attribut nillable est utilisé comme ceci:

Définition: <xsd:element name="shipDate" type="xsd:date" nillable="true"/>

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

vous avez donc à l'autre spécifiquement que la valeur est nulle.

L'autre façon de le faire est de minOccurs état = 0, pour permettre à la valeur à manquer.

Autres conseils

Une façon que je trouve qui résout aussi le problème avec un minimum de code a été d'ajouter la valeur par défaut = attribut « 0 » au XSD. Cela vous permet de valider en tant que double sans avoir à faire face à zéro en faisant défaut zéro à un certain nombre.

erreur document XML avec deserialising fortement typé XSD

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top