Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/01/2008, 01:55
galileo1980
 
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Leer XML en Java

Hola,

Sigo sin tener muy claro como lo tengo que hacer :(.
El código que me has puesto tengo unas dudas:

public class validate
{
static public class ResolverImpl implements EntityResolver
{
public InputSource resolveEntity(String publicId, String
systemId)
throws SAXException, IOException
{
System.out.println("resolving " + systemId + " : " +
publicId);
System.out.flush();
return new InputSource(new FileInputStream(
"c:\\somedirectory\\" + systemId));
}
}


static class ErrorHandlerImpl implements ErrorHandler
{
List errors = new LinkedList();

public void fatalError(SAXParseException e)
{
errors.add(e);
}

public void warning(SAXParseException e)
{
}

public void error(SAXParseException e)
{
errors.add(e);
}

boolean hasErrors()
{
if (errors.size() > 0)
return true;
else
return false;
}

void printErrors()
{
Iterator it = errors.iterator();
while (it.hasNext())
System.out.println(it.next());
}
}

static void validateContents(byte[] contents)
{
try
{
ErrorHandlerImpl handler = new ErrorHandlerImpl();

ByteArrayInputStream stream = new
ByteArrayInputStream(contents);
DocumentBuilderFactory docBuilderFactory
= DocumentBuilderFactory.newInstance();
docBuilderFactory.setValidating(true);
docBuilderFactory.setNamespaceAware(true);

DocumentBuilder docBuilder =
docBuilderFactory.newDocumentBuilder();
docBuilder.setErrorHandler(handler);
docBuilder.setEntityResolver(new ResolverImpl());
Document document = docBuilder.parse(stream);
Element rootElement = document.getDocumentElement();

System.out.println("errors = " + handler.hasErrors());
handler.printErrors();
}
catch (ParserConfigurationException e)
{
System.out.println("parse error:" + e);
}
catch (SAXException e)
{
System.out.println("parse error:" + e);
}
catch (IOException e)
{
System.out.println("parse error:" + e);
}
}

public static void main (String[] args)
{
try
{
validateContents(Util.readFile(args[0]));
}
catch (Exception e)
{
System.out.println("exception:" + e);
}
}
}

En la clase public InputSource resolveEntity(String publicId, String systemId), publicId y systemId que valores tienen que tener, o que tienen que tener??

En la clase static void validateContents(byte[] contents), contents que valor o parametro tiene que tener??

Dentro de la clase static void validateContents(byte[] contents), cuando se declara Element rootElement = document.getDocumentElement();, rootElement para que se utiliza??

En general me gustaría que me explicaras como funciona la clase en sí, que no me aclaro mucho.

Muchas gracias por responder.

Un saludo.