Foros del Web » Programación para mayores de 30 ;) » Java »

Validacion de un xml

Estas en el tema de Validacion de un xml en el foro de Java en Foros del Web. Buenas estoy realizando la validacion del xml con el codigo que os pongo aki, y me salta la excepcion que os pongo en el catch ...
  #1 (permalink)  
Antiguo 16/03/2006, 05:51
 
Fecha de Ingreso: febrero-2006
Mensajes: 63
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta Validacion de un xml

Buenas estoy realizando la validacion del xml con el codigo que os pongo aki, y me salta la excepcion que os pongo en el catch que mi SAX parser no es JAXP 1.2 complaint porque no reconoce la propiedad SAX "http://java.sun.com/xml/jaxp/properties/schemaLanguage":

CODIGO:

String SCHEMA_LANGUAGE= "http://java.sun.com/xml/jaxp/properties/schemaLanguage",
XML_SCHEMA = "http://www.w3.org/2001/XMLSchema",
SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";

byte currentXMLBytes[] = xml.getBytes();
ByteArrayInputStream input = new ByteArrayInputStream(currentXMLBytes);

File schema = new File(getServletContext().getRealPath("/views") + "documentos.xsd");
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
SAXParser parser = factory.newSAXParser();

try {
parser.setProperty(SCHEMA_LANGUAGE, XML_SCHEMA);
parser.setProperty(SCHEMA_SOURCE, schema);
} catch (SAXNotRecognizedException x) {
log.writeTrace(Log.ERROR,this,"validaXML","Your SAX parser is not JAXP 1.2 compliant.");
log.writeTrace(Log.ERROR,this,"validaXML",JFactory Exception.getStackTrace(x));
return false;
}

return true;



El xml lo paso por parametro a la funcion.

Que puedo hacer????
  #2 (permalink)  
Antiguo 16/03/2006, 06:20
 
Fecha de Ingreso: febrero-2006
Mensajes: 63
Antigüedad: 18 años, 10 meses
Puntos: 0
Informacion

Salta la excepcion org.xml.sax.SAXNotRecognizedException: SAX property 'http://java.sun.com/xml/jaxp/properties/schemaLanguage' not recognized. cuando realiza en codigo parser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);, alguien sabe algo????
  #3 (permalink)  
Antiguo 16/03/2006, 07:57
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Te esta diciendo que el parser que estas usando no reconoce esa propiedad, asi que tendras que buscar un parser que si la reconozca o buscar otra forma de especificarle esa propiedad.
Lo primero es averiguar que parser estas usando, version, etc...
  #4 (permalink)  
Antiguo 16/03/2006, 08:11
 
Fecha de Ingreso: febrero-2006
Mensajes: 63
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta Entonces.....

¿Como puedo cambiar el parse si es 1.0, lo tendría que cambiar a 1.2?
Ando un poco perdio.Alguien que me ayude
  #5 (permalink)  
Antiguo 16/03/2006, 11:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Xerces 2, por ejemplo, implementa JAXP1.3

http://xerces.apache.org/xerces2-j/
  #6 (permalink)  
Antiguo 17/03/2006, 02:28
 
Fecha de Ingreso: febrero-2006
Mensajes: 63
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta OK.Pero...............

Ok. Al final me funcionó la validacion, pero ahora me plantea un problema que no consigo siquiera entender.Os explico:
Despues de hacer la validacion que me la hace ok, devolviendome true,

boolean esValido = validaXML (xml);

Hago esto:

SAXLectorDocumentosXML saxLDXML = new SAXLectorDocumentosXML();
ErrorPrinter errorPrinter = new ErrorPrinter();
XMLReader rdr = (XMLReader)XMLReaderFactory.createXMLReader( "org.apache.xerces.parsers.SAXParser" );
rdr.setContentHandler( saxLDXML );
rdr.setErrorHandler(errorPrinter);

rdr.parse(xml);//Siendo xml el documento

y al hacer parse me suelta la excepcion:

java.net.MalformedURLException: no protocol: <?xml version="1.0" encoding="ISO-8859-1"?>.....Y me pinta el xml

at java.net.URL.<init>(URL.java:537)
at java.net.URL.<init>(URL.java:434)
at java.net.URL.<init>(URL.java:383)
at org.apache.xerces.impl.XMLEntityManager.setupCurre ntEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determin eDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse (Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse (Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse( Unknown Source)



¿Que puede ser lo que me está pasando?
Yo creo que puede ser que no encuentra el esquema pero se lo he modificado en la propiedad de rdr pero me hace lo mismo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:43.