validation fichier XML /XSD
Bonjour,
J'ai un programme pour créer des fichiers XML et l'envoyer à une autre application.
J'ai une méthode pour valider les documents XML envoyés et elle marche bien. Cependant, l'autre application me renvoie un fichier XML et je n'arrive pas à le faire valider par ma méthode et ce malgré que le document est valide.
voici l'erreur qu'elle m'est affichée.
J'ai passé beaucoup de temps sur ce problème et j'aimerais bien que quelqu'un m'aide.
Code:
org.xml.sax.SAXParseException: cvc-elt.1: Impossible de trouver la dclaration de l'lment 'notification'.
Voici le code de ma méthode de validation
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| public static void validerXML(String xml,InputStream xsd) throws SAXException, IOException, ParserConfigurationException, SAXParseException {
logger.debug("Validation du PLI xml");
String JAXP_SCHEMA_LANGUAGE =
"http://java.sun.com/xml/jaxp/properties/schemaLanguage";
String W3C_XML_SCHEMA =
"http://www.w3.org/2001/XMLSchema";
String JAXP_SCHEMA_SOURCE =
"http://java.sun.com/xml/jaxp/properties/schemaSource";
// Suppression du BOM UTF8 s'il existe
if ((xml.charAt(0) == 0x00EF) && (xml.charAt(1) == 0x00BB) && (xml.charAt(2) == 0x00BF) ) {
xml = xml.substring(3, xml.length());
}
InputSource inputSource = new InputSource();
StringReader strread = new StringReader(xml);
inputSource.setCharacterStream(strread);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringComments(true);
dbf.setNamespaceAware(true);
dbf.setValidating(true);
dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
dbf.setAttribute(JAXP_SCHEMA_SOURCE, xsd);
// Parsage du fichier XML avec DOM
DocumentBuilder db = dbf.newDocumentBuilder();
db.setErrorHandler(new ErrorHandler() {
public void fatalError(SAXParseException e) throws SAXParseException {
logger.error(e);
throw e;
}
public void error(SAXParseException e) throws SAXParseException {
logger.error(e);
throw e;
}
public void warning(SAXParseException e){
logger.error(e);
}
});
Document doc = db.parse(inputSource);
} |
Merci d'avance