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

Básicamente con este código he conseguido que funcione, siempre y cuando le indique la ruta absoluta del fichero xsd.


String rutaXSD = "C:/Documents and Settings/user/Escritorio/DOC/Nueva carpeta/validateXML.xsd";

SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
File schemaLocation = new File(rutaXSD);

Schema schema = factory.newSchema(schemaLocation);


// 3. Get a validator from the schema.
Validator validator = schema.newValidator();

// 4. Parse the document you want to check.
InputStream in = new ByteArrayInputStream(param.getBytes("ISO-8859-1"));
Source sourceP = new StreamSource(in);

// 4. Parse the document you want to check.
//String input = "C:/Documents and Settings/user/Escritorio/Nueva carpeta (2)/validateXML.xml";
//Source source = new StreamSource(input);


// 5. Check the document
try {
validator.validate(sourceP);
System.out.println("El xml recibido por parámetros es valido.");
} catch (SAXException ex) {
System.out.println("El xml recibido por parámetros no es valido porque ");
System.out.println(ex.getMessage());
} catch (Exception e) {
System.out.println("Ha ocurrido una excepción no controlada: ");
System.out.println(e.getMessage());
}


Como digo, este código funciona y valida correctamente si le indico la ruta absoluta, pero el problema es que así no me sirve ya que tanto los xsd como los xml tienen que estar alojados en la carpeta del proyecto, probablemente en una carpeta al mismo nivel que la de jsp, dentro de WEB-INF.

Así que necesito poder referenciar de alguna manera la ruta relativa de los ficheros xsd y xml.

Estoy trabajando en java con el rational y con el servidor Websphere Application Server v.7 o WAS 7. Necesito ayuda, please!!.

PD: El getServletContext no lo reconoce y no puedo usarlo, no sabe lo que es y me dice que lo implemente yo.