Java - xml val con xsd java

 
Vista:

xml val con xsd java

Publicado por albertopower (1 intervención) el 15/09/2008 17:10:55
Buenas tardes, soy muy novato en esto del java, dicho esto, tengo un script java que deberia ser capaz de validar un xml mediante un xs, los dos ficheros los recibiría y ejecutaria el java. bien, me sale un error de compilación, y necesitaria saber como poner los dos ficheros por parametros, el Script es el siguiente:


import java.io.FileReader;
import java.io.IOException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.*;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;
import org.jdom.*;

public class validarxmlconxsd {

public static boolean main(String sFichXml, String sFichXsd){
boolean bIsXmlOk = false;
String YES = "yes";
String NO = "no";
String CHAR_ENCODING = "UTF8";
boolean NAME_SPACE_AWARE = true;
boolean VALIDATING = true;
String SCHEMA_LANGUAGE ="http://java.sun.com/xml/jaxp/properties/schemaLanguage";
String SCHEMA_LANGUAGE_VAL = "C:/Documents and Settings/jtorreci.JTORRECIHPXP/Escritorio/OCSUM/pruebas.xsd";
String SCHEMA_SOURCE ="C:/Documents and Settings/jtorreci.JTORRECIHPXP/Escritorio/OCSUM/Prueba Desarrollo.xml";

try {
FileReader xmlReader;
FileReader xsdReader;

xmlReader = new FileReader(sFichXml);
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) {
System.out.println(e.toString());
}
catch (ParserConfigurationException e) {
System.out.println(e.toString());
}
catch (SAXException e) {
System.out.println(e.toString());
}
catch (IOException e) {
System.out.println(e.toString());
}

return bIsXmlOk;
}// Fin de validarXMLvsXSD

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;
}

}// Fin de XmlDefaultHandler

}// Fin de ValidarXML



Mi error es java.lang.NoSuchMethodError: main
Exception in thread "main"

como podeis ver el main está declarado, necesito ayuda con caracter urgente por favor

Muchas gracias de antemano y saludos
Alberto.
[email protected]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:xml val con xsd java

Publicado por Gerardo (62 intervenciones) el 20/10/2008 03:45:55
Lo que pasa es que la clase principal debe tener un argumento, es decir que solo podras envialre un paramentro y este se hace de forma automatica cuando lo ejecutas desde linea de comandos

la sintaxis del metodo main es

public static void main(String[] args)

donde:
public = puede ser accesado desde cualquier clase
static = puede ser ejecutado ese metodo sin necesidad de crear constructor de la clase que contenga el main
void = No retorna ningun tipo de dato
main = es el metodo que lee la JRE por default

COmo podras ver el argumento es de tipo String y es un Array, eso quiere decir que espera un array de String y por ende tendras que obedecer esa sintaxis

Para ser especificos, tu problema es que no cumples con esa sintaxis, te dire lo que falla, el metodo te digo que debe ser void y tu le pones boolean y para terminar le escribes que espera dos argumentos de tipo String, mal hecho, ahi solo debe ser uno de Tipo String como Array, en pocas palabras deberias hacer los siguiente cuando ejecutes tu clase

java validarxmlconxsd archivo.xml validador.xsd

eso quiere decir que estas ejecutando la clase validarxmlconxsd y los dos parametros que le das son los archivos que quieres utilizar, ahora te interesara como capturar tus parametros enviados no???

Muy fácil para leer el primero debes de obtenerlo de la siguiente forma:
System.out.println(args[0]);

y por ende el segundo
System.out.println(args[1]);

porque recuerda que tu array donde recibes argumentos es de tipo String y se llama args (le puedes poner el nombre que tu quieras) y los arreglos comienzan desde 0 en java

Espero puedas correjir ese detallito, mucha suerte!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:xml val con xsd java

Publicado por Gerardo Aquino (62 intervenciones) el 20/10/2008 03:46:02
Lo que pasa es que la clase principal debe tener un argumento, es decir que solo podras envialre un paramentro y este se hace de forma automatica cuando lo ejecutas desde linea de comandos

la sintaxis del metodo main es

public static void main(String[] args)

donde:
public = puede ser accesado desde cualquier clase
static = puede ser ejecutado ese metodo sin necesidad de crear constructor de la clase que contenga el main
void = No retorna ningun tipo de dato
main = es el metodo que lee la JRE por default

COmo podras ver el argumento es de tipo String y es un Array, eso quiere decir que espera un array de String y por ende tendras que obedecer esa sintaxis

Para ser especificos, tu problema es que no cumples con esa sintaxis, te dire lo que falla, el metodo te digo que debe ser void y tu le pones boolean y para terminar le escribes que espera dos argumentos de tipo String, mal hecho, ahi solo debe ser uno de Tipo String como Array, en pocas palabras deberias hacer los siguiente cuando ejecutes tu clase

java validarxmlconxsd archivo.xml validador.xsd

eso quiere decir que estas ejecutando la clase validarxmlconxsd y los dos parametros que le das son los archivos que quieres utilizar, ahora te interesara como capturar tus parametros enviados no???

Muy fácil para leer el primero debes de obtenerlo de la siguiente forma:
System.out.println(args[0]);

y por ende el segundo
System.out.println(args[1]);

porque recuerda que tu array donde recibes argumentos es de tipo String y se llama args (le puedes poner el nombre que tu quieras) y los arreglos comienzan desde 0 en java

Espero puedas correjir ese detallito, mucha suerte!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar