Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Extraer datos de un xml con jsp
Enviado por Eufelia Murillo el día 10 de octubre de 2005
Yo tube que hacer una pequeña aplicación también en jsp que tenia que leer datos de configuración de un archivo xml. Para hacer esto yo me implemente una clase XmlLoad que se ocupaba de cargar los datos del archivo xml. Posteriormente me hice una clase (JabaBean) que utilizaba la clase XmlLoad para recuperar los datos y la página jsp utilizaba este jababean para mostrar la información.
En el constructor se crea e inicializa el árbol DOM que cargará los datos en memoria para posteriormente procesarlos.
public XMLLoad()
throws AppException
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
try
{
DocumentBuilder builder = factory.newDocumentBuilder();
File f = new File(\\\\\\\"./\\\\\\\");
doc = builder.parse(new File(f.getAbsolutePath() + CONF_FILE));
//Recupero el elemento raiz del árbol DOM asociado a la lista de usuarios
Element root = (Element)doc.getDocumentElement();
}
catch(SAXParseException spe){
// Error generated by the parser
System.out.println (\\\\\\\"\\\\\\\\n** Parsing error\\\\\\\"
+ \\\\\\\", line \\\\\\\" + spe.getLineNumber ()
+ \\\\\\\", uri \\\\\\\" + spe.getSystemId ());
System.out.println(\\\\\\\" \\\\\\\" + spe.getMessage() );
// Use the contained exception, if any
Exception x = spe;
if (spe.getException() != null)
x = spe.getException();
x.printStackTrace();
throw new AppException(\\\\\\\"Parsing error, line \\\\\\\" + spe.getLineNumber() +
\\\\\\\", \\\\\\\" + spe.getSystemId());
}
catch(ParserConfigurationException pce){
// Parser with specified options can\\\\\\\'t be built
pce.printStackTrace();
throw new AppException(pce.getMessage() );
}
catch(SAXException sxe){
// Error generated by this application
// (or a parser-initialization error)
Exception x = sxe;
if (sxe.getException() != null)
x = sxe.getException();
x.printStackTrace();
throw new AppException(sxe.getMessage());
}
catch(IOException ioe){
// I/O error
ioe.printStackTrace();
throw new AppException(ioe.getMessage());
}
}
A continuación yo en mi caso me hice una función que recorre todas las etiquetas con el nombre \\\\\\\"search\\\\\\\" y dentro de estas voy recuperando los valores de todos sus elementos. Para esto utilizo las siguientes funciones:
NodeList lista = doc.getElementsByTagName(\\\\\\\"search\\\\\\\");
Esta función nos devuelve una lista de nodos correspondientes a todas las etiquetas con el nombre mencionado existentes en el documentos.
Posteriormente recorro todos los nodos recuperados obteniendo todos los elementos de dichos nodos:
int n=lista.getLength();
for(int i=0; i<n; i++)
{
Node nodo = lista.item(i);
//Aquí pondrías el código del tratamiento del nodo actual
}
por si te hace falta para recuperar el valor de un nodo del tipo <nombrenodo>valor</nombrenodo>
nodo.getFirstChild().getNodeValue();
Para recuperar la lista de atributos de una etiqueta: