Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/11/2011, 10:05
snakejrh
 
Fecha de Ingreso: junio-2009
Mensajes: 9
Antigüedad: 15 años, 6 meses
Puntos: 0
Problema al validar XML con XSD en JAVA. Dejo código.

Buenas tardes,

Tengo un problema intentando validar un XML con un XSD, he probado de varias maneras, con JDOM, con SAX y nada, casi siempre se pega un chasque en el paso del builder, os dejo el código pegado aquí:

private String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
private String W3C_XML_SCHEMA ="http://www.w3.org/2001/XMLSchema";
private String JAXP_SCHEMA_SOURCE ="http://java.sun.com/xml/jaxp/properties/schemaSource";

private Logger log = null;

public static String validarXSD(String xsd, String datosXML, Logger logIN){

try {

//En esta variable se almacena, con el método que se considere adecuado, el nombre del fichero de validación XSD

String xsd1 = "entradaNPFSWMOD";
XSDBuilder builder =new XSDBuilder();

//String ruta = ("proyecto/xsd/"+xsd1+".xsd");
String ruta = (xsd1+".xsd");

InputSource inso = new InputSource();

// Creación del objeto XML Schema

XMLSchema schemadoc1= (XMLSchema) builder.build("proyecto/xsd/"+xsd+".xsd");
XMLSchema schemadoc2= (XMLSchema) builder.build(inso.toString());
DOMParser dp= new DOMParser();

// Configuracion del objeto validador

InputStream in = new ByteArrayInputStream(datosXML.getBytes("ISO-8859-1"));

dp.setXMLSchema(schemadoc1);
dp.setValidationMode(XMLParser.SCHEMA_VALIDATION);
dp.setPreserveWhitespace(true);
dp.setErrorStream(System.out);

//logIN.info("Parseando "+xsd);
System.out.println("Parseando "+xsd);
dp.parse(in);
System.out.println("El fichero introducido ('"+xsd+"') se ha parseado sin errores");

return null;

} catch (XSDException e) {
System.out.println("XSDException: " + e.getMessage());
return e.getMessage();
} catch (MalformedURLException e){
System.out.println("MalformedURLException: " + e.getMessage());
return e.getMessage();
} catch (XMLParseException e) {
System.out.println("Parser Exception: " + e.getMessage());
return e.getMessage();
}catch (Exception e) {
System.out.println("NonParserException: " + e.getMessage());
return e.getMessage();
}

}//Fin validarXSD

Casi siempre me da este error al llegar a la linea que he marcado:

: XML-0220: (Fatal Error) Invalid InputSource.

¿Alguien me puede echar un cable?

MUCHAS GRACIAS!!