Jaxb 2.0 de la validation du Schéma de problème
Je suis en train de travailler avec Jaxb 2.x et a essayé de valider le document XML avec le XSD en utilisant le tutoriel suivant
que le sien est le code que j'ai écrit
unmarshaller.setSchema(schema);
SAXSource source = new SAXSource(new InputSource(xmlFileLocation));
Validator validator = schema.newValidator();
validator.setErrorHandler(new XMLErrorHandler<Object>());
try {
validator.validate(source);
} catch (SAXException e) {
et mon XMLErrorHanlder classe ont fait suite à la signature
public class XMLErrorHandler<T> implements ErrorHandler {
public void error(SAXParseException exception) throws SAXException {
xmlUnmarshaller.setValidationFlag(true);
log.error(
"Line:Col[" + exception.getLineNumber()
+ ":" + exception.getColumnNumber()
+ "]:" + exception.getMessage());
exception.printStackTrace();
}
}
}
code d'avertissement et fatale a été supprimé
maintenant son valider le code XML XSD mais il n'en montrer que la première erreur rencontrée alors que je veux la faire imprimer sur colsole toutes les erreurs et d'avertissement sur la console
je ne suis pas sûr de l'endroit où je fais de mal de toute aide dans ce sera utile
Edit1
ici est la partie du fichier XSD
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="destination" type="Destination"/>
<xs:complexType name="Destination">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="destinationID" type="xs:string" minOccurs="0"/>
<xs:element name="shortDescription" type="xs:string" minOccurs="0"/>
<xs:element name="longDescription" type="xs:string" minOccurs="0"/>
<xs:element name="stateID" type="xs:string"/>
<xs:element name="typeCode" type="xs:int"/>
<xs:element name="countryCode" type="xs:string"/>
<xs:element name="categories" type="xs:string"/>
<xs:element name="transport" type="Transport" minOccurs="0" maxOccurs="1"/>
<xs:element name="cultures" type="Cultures" minOccurs="0"/>
<xs:element name="events" type="Events" minOccurs="0" maxOccurs="1"/>
<xs:element name="placesToVisit" type="PlacesToVisit" minOccurs="0" maxOccurs="1"/>
<xs:element name="contacts" type="Contact" minOccurs="0" maxOccurs="1"/>
<xs:element name="addresses" type="address" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
et le fichier XML est
<destination xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="destination.xsd">
<name>Palampur</name>
<destinationID>PLP</destinationID>
<shortDescription>shortDescription</shortDescription>
<longDescription>longDescription</longDescription>
<typeCode>0</typeCode>
<categories>categories</categories>
ce que mon hypothèse après avoir fait quelques R&D c'est qu'il y a un problème avec XSD structure ou le XML généré, mais je ne suis pas sûr abt il
OriginalL'auteur Umesh Awasthi | 2011-02-01
Vous devez vous connecter pour publier un commentaire.
Je suppose qu'il y ait eu un
fatalError
signalés. Vous n'avez pas à fournir de telles informations dans votre question. Si c'est le cas, vous pouvez lire l'explication de votre problème dans la javadoc deErrorHandler
:J'espère que cela peut expliquer votre problème.
Edit 1: Après que vous avez posté votre schéma, je pense que je sais qui vous dérange. Le programme de validation des rapports d'une seule erreur par le mauvais élément. Dans votre cas c'est:
L'erreur sera quelque chose comme (indique manque stateID):
Il n'a pas de rapport de multiples erreurs, car il y a seulement un rapport d'erreur par type complexe. Si vous changez de type complexe comme ceci:
Vous pouvez obtenir un message différent, mais encore une fois un seul:
Si vous modifier votre schéma pour accepter plusieurs
destination
éléments, vous pouvez obtenir 1 message d'erreur par élément.Cheers!
Alors vous feriez mieux de poster le contenu de votre fichier XML (situé à xmlFileLocation). Si le xsd est pas la même que dans le tutoriel le poster aussi. Le tutoriel fonctionne comme prévu :/
Et que dire de cela? 🙂 -> xmlUnmarshaller.setValidationFlag(true); Vous ne devriez pas avoir besoin d'elle.
mon post mis à jour pour XML et le fichier XSD
awasthi: voir ma mise à jour correspondant à votre mise à jour 🙂
OriginalL'auteur Lachezar Balev