Home > Foro de XML >

Debates de XML > Validar un fichero xml con java

Validar un fichero xml con java

Escrito por Ivan el 26/12/2006

Hola,

Soy un novato en esto del xml y no sé muy bien como se valida un fichero xml utilizando java.

He leido que se puede utilizar la api de DOM o de SAX pero no encuentro ningún ejemplo de como pasandole la DTD del fichero xml a validar, estos metodos lo hacen, quiero decir si esta api tiene algún metodo que teniendo la dtd, valide el fichero xml q subo a un servidor por ejemplo, sin necesidad de recorrerlo yo, mirando etiqueta por etiqueta.

A ver si alguien me puede orientar un pokillo,

Gracias de antemano.


Citar  |  
Ver mensaje      

Escrito por Javier el 06/02/2007
Puedes usar SAX para validar desde un esquema xsd pero desde un dtd no lo sé

Citar  |  
Ver mensaje     

Escrito por Roberto el 22/05/2007

Hola Javier,

  Acabo de leer tu mensaje y estoy muy interesado en lo que cuentas. Podrías indicarme un poco más en detalle cómo se puede validar un fichero XML a partir de su XMLSchema (xsd) con llamadas a funciones Java. ¿Qué librerías importar? ¿Qué funciones usar? Muchas gracias por anticipado


Citar  |  
Ver mensaje     

Escrito por Sara el 22/05/2007

Hola, yo también estoy trabajando en esto de manipular xml mediante java, uso jaxb, y netbeans 5. 5, pero aun no se como funciona exactamente, si me podeis mandar un ejemplo, os lo agradecería.

¿Que errores te dan?

Gracias.

Citar  |  
Ver mensaje     

Escrito por Kaisser el 17/10/2007

Hola, yo tambien estoy muy interesado.

Siento no poder aportar ayuda.

Quiero validar un xml con su xsd desde java, pero ni idea de como hacerlo.

Encontré esto: http://www.adictosaltrabajo.com/tutoriales/tutoriales. Php? Pagina=schemaxml   Pero no es exactamente lo que busco, quiero algo que pueda integrar en mi aplicación.

Salu2 y esperemos que alguien nos pueda ayudar. Gracias.


Citar  |  
Ver mensaje     

Ana
Sevilla, España
Escrito por Ana el 03/12/2007

Hola! Yo tambien estoy intentando validar un xml con su xsd, pero no tngo ni idea de lo que tngo q hacer. En JAva, claroo. Tengo creado mi xml y su xsd, pero ya no sé seguir...  El proyecto es para montarlo en Eclipse. Si alguien me puede mandar un ejemplo de codigo o algo, se lo agradeceria....

Xaooo


Citar  |  
Ver mensaje     

Dani
Madrid, España
Escrito por Dani el 05/12/2007
Hola, estoy en mi trabajo y me encuentro perdida, quiero aprender a validar un XML con un XSD, ¿Alguien sabe cómo lo puedo hacer?. Trabajo con weblogic. Por favor que alguien me ayude, estoy perdida!

Citar  |  
Ver mensaje     

Ivan
Madrid, España
Escrito por Ivan el 05/12/2007

Hola,

Un ejemplo de como se valida un fichero xml con una dtd o con una xsd, con librerias jdom:

Import org. Jdom. *;
import org.jdom.input. SAXBuilder;
import org.jdom.output. *;

Public class Ejemplo {

    public boolean validar(String ficheroXml){

       boolean valido=false;

       File f=null;

       try{

           f=new File(ficheroXml);
         
           SAXBuilder builder=new SAXBuilder(true);
 
           Document jdoc=builder. Build(f);
         

    }catch (JDOMException e){

          System.out.println("Documento XML mal formado o incorrecto. ");
            System.out.println(e. GetMessage());
            valido=false

    }

    }

}


Si salta una excepcion JDOMException es que el fichero no cumple la dtd o la xsd. Lógicamente la dtd o xsd tiene que estar referenciada dentro del documento xml y en una ruta que se pueda encontrar, lo mejor ponerlo todo, fichero xml y dtd o xsd en el mismo directorio.

Aproximadamente esto puede funcionar.

Un saludo.


Citar  |  
Ver mensaje     

Escrito por Felis el 28/12/2007
Hola aqui os dejo otra forma de validar el fichero Xml contra el Xsd, pasando las rutas de los ficheros al metodo de validacion, que directamente devoverá un boleano con el resultado de la operacion.
"
public class FicoRuXsdVsXml
{
    private static boolean validarXmlvsXsd(String sFichXml, String sFichXsd)
    {
     boolean bIsXmlOk           = false;
        boolean NAME_SPACE_AWARE   = true;
        boolean VALIDATING         = true;
        String SCHEMA_LANGUAGE     = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
        String SCHEMA_LANGUAGE_VAL = "http://www.w3.org/2001/XMLSchema";
        String SCHEMA_SOURCE       = "http://java.sun.com/xml/jaxp/properties/schemaSource";
        String sCtrlErr  ="";
       
     try
  {
            Reader xmlReader = new FileReader(sFichXml);
            Reader xsdReader = new FileReader(sFichXsd);
            SAXParserFactory factory = SAXParserFactory. NewInstance();
           
             // Configure SAXParserFactory to provide parsers that are namespace aware.
            factory. SetNamespaceAware(NAME_SPACE_AWARE);
           
            // Configure SAXParserFactory to provide parsers that are validating. This property
            // must have the value true for any of the property strings defined below to take
            // effect.
            factory. SetValidating(VALIDATING);
            SAXParser parser = factory. NewSAXParser();
           
            // Setting the schema language for xml schema validation
            parser. SetProperty(SCHEMA_LANGUAGE, SCHEMA_LANGUAGE_VAL);
            // Setting the schema source for xml schema validation
            parser. SetProperty(SCHEMA_SOURCE, new InputSource(xsdReader));
           
            DefaultHandler handler = new XmlDefaultHandler();
            parser. Parse(new InputSource(xmlReader), handler);
            // si procesa todo el metodo sin producir excepcion, el fichero xml
            // es correcto.
            bIsXmlOk = true;
     }
     catch (FactoryConfigurationError    e)  {  sCtrlErr = "{" + e. ToString() + "}. ";}
     catch (ParserConfigurationException e)  {  sCtrlErr = "{" + e. ToString() + "}. ";}
     catch (SAXException e)                  {  sCtrlErr = "{" + e. ToString() + "}. ";}
     catch (IOException e)                   {  sCtrlErr = "{" + e. ToString() + "}. ";}
     
     return bIsXmlOk;
    } 
 
 
    public static class XmlDefaultHandler extends DefaultHandler
 {
        /** @see org.xml.sax. ErrorHandler#error(SAXParseException)*/
        public void error(SAXParseException spe) throws SAXException
  {
            throw spe;
        }
        /** @see org.xml.sax. ErrorHandler#fatalError(SAXParseException)*/
        public void fatalError(SAXParseException spe) throws SAXException
  {
            throw spe;
        }
 }
}


Un saludo, espero que os sirva.
 Suko

Citar  |  
Ver mensaje     

Jose Bovet
Santiago, Chile
Escrito por Jose Bovet el 15/04/2008

Aqui como valido los xml con Jaxb, retorna true si es válido..

    /***************************************************************************
     * Método que retorna si es un documento válido o no
     *
     * @return boolean
     * @throws ParserConfigurationException
     * @throws SAXException
     * @throws IOException
     *
     * @author jbovet
     * @since 14-04-2008
     *
     */
    public static boolean ValidaXml() throws ParserConfigurationException,
            SAXException, IOException {

        // xml - DOM
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory. NewInstance();
        builderFactory. SetNamespaceAware(true);
        DocumentBuilder psr = builderFactory. NewDocumentBuilder();
        Document doc = psr. Parse(new File(Fichero_Entrada));

        // http://www.w3.org/2001/XMLSchema
        SchemaFactory factory = SchemaFactory. NewInstance(XMLConstants. W3C_XML_SCHEMA_NS_URI);

        Source filexsd = new StreamSource(new File(Fichero_Xsd));
        Schema schema = factory. NewSchema(filexsd);
        Validator valida = schema. NewValidator();

        // Intenta validar DOM
        try {
            valida. Validate(new DOMSource(doc));
            return true;

        } catch (SAXException saxe) {
            System.out.println("- Documento Inválido - ");
            System.out.print(saxe. GetMessage());
            return false;
        }

    }


Citar  |  
Ver mensaje     

Escrito por Rodrop el 22/08/2008

Hola a todos,

He estado probando los codigos y JAXB me ha funcionado bien pero no reconoce el ISO-8859-15 (he probado con ISO-8859-1 y funciona ok), sabeis de alguna forma u otro codigo para que funcione con este estandar?

Por los otros dos:

 jdom no me reconocia ni la primera etiqueta del xml (Error de que tenia que declararla, el fichero esta validado con xml-spy y ahora con jaxb y me sale el mismo error).

Y el segundo me sale el siguiente error error :java.lang.IllegalArgumentException: No attributes are implemented. No se si estoy utilizando bien las librerias.

Haber si me podeis echar una mano con ISO-8859-15, muchas gracias.


Citar  |  
Ver mensaje     

Escrito por Noelita el 8 de Julio

Stoy en un proyecto final q tengo q validar un archivo excel en java.
q devo hacer estoy un poco perdida por q desde hace mucho q no veo java por fvor si alguien pudiera ayudarme

agradesco por anticipado su ayuda


Citar  |  
Ver mensaje     


Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA

Búsquedas frecuentes: modo de produccion comunista foros de enfermeria bilirrubina indirecta alta foro hospital manises activar bluetooth

Emagister cumple la Ley Orgánica 15/1999 de 13 de diciembre, de Protección de datos de Carácter Personal, y posee el código de inscripción nº 2002010053 del Registro General de la Agencia de Protección de Datos. Copyright © 1999/2000 - Grupo Intercom - Todos los derechos