Programación en castellano
Inicio > Foros > Java y XML > Extraer datos de un xml con jsp
-Foros de debate

Java y XML
Lista de foros | Lista de mensajes de este foro

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

Necesito sacar cierta información de un archivo xml basico como este:
<?xml version="1.0" encoding="UTF-8" ?>
- <ventas>
- <datosRegistrador>
<numeroRUC>0992145900001</numeroRUC>
</datosRegistrador>
- <datosVentas>
- <venta>
<rucComercializador>1213213131313</rucComercializador>
<numeroCAMV_CPN>311</numeroCAMV_CPN>
<serialVin>9BFUT35F558678362</serialVin>
<nombrePropietario>MARIO FERNANDO VERGARA BUITRON</nombrePropietario>
<tipoIdentificacionPropietario>C</tipoIdentificacionPropietario>
<numeroDocumentoPropietario>1703470631</numeroDocumentoPropietario>
<tipoComprobante>2</tipoComprobante>
<establecimientoComprobante>31</establecimientoComprobante>
<puntoEmisionComprobante>1</puntoEmisionComprobante>
<numeroComprobante>13</numeroComprobante>
<numeroAutorizacion>133</numeroAutorizacion>
<fechaCompra>30-09-2005</fechaCompra>
<precioVenta />
<codigoCantonMatriculacion>null</codigoCantonMatriculacion>
- <datosDireccion>
<tipoDireccion>Residencia</tipoDireccion>
<calle>131</calle>
<numero>3131</numero>
<interseccion>313</interseccion>
</datosDireccion>
- <datosTelefono>
<tipoTelefono>FIJO</tipoTelefono>
<provincia>Galapagos</provincia>
<numero>2851-360</numero>
</datosTelefono>
</venta>
</datosVentas>
</ventas>

desde una pagina jsp, para poder mostrarlos como lo puedo hacer, ayudenme, por favor!!!!!!!



 
Re: Extraer datos de un xml con jsp
Enviado por Colladox el día 10 de octubre de 2005

Hola amigo,

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.

El archivo xml mio sigue la siguiente estructura:

<atopeite>
<search id=\\\\\\\"terra\\\\\\\" name=\\\\\\\"Google\\\\\\\">
<address>http://buscador.terra.es/Default.aspx</address>
<param id=\\\\\\\"query\\\\\\\" name=\\\\\\\"query\\\\\\\"/>
<param id=\\\\\\\"lang\\\\\\\" name=\\\\\\\"ca\\\\\\\"/>
<param id=\\\\\\\"others\\\\\\\" name=\\\\\\\"source=Search\\\\\\\"/>
<languages>
<lang id=\\\\\\\"spanish\\\\\\\" value=\\\\\\\"e\\\\\\\"/>
<lang id=\\\\\\\"english\\\\\\\" value=\\\\\\\"s\\\\\\\"/>
</languages>
<calification>30</calification>
<parser>atopeite.app.TerraParser</parser>
</search>
<search id=\\\\\\\"msn\\\\\\\" name=\\\\\\\"MSN Search\\\\\\\">
<address>http://search.msn.com/results.aspx</address>
<param id=\\\\\\\"query\\\\\\\" name=\\\\\\\"q\\\\\\\"/>
<param id=\\\\\\\"lang\\\\\\\" name=\\\\\\\"lf\\\\\\\"/>
<param id=\\\\\\\"others\\\\\\\" name=\\\\\\\"FORM=QBHP\\\\\\\"/>
<languages>
<lang id=\\\\\\\"spanish\\\\\\\" value=\\\\\\\"1\\\\\\\"/>
<lang id=\\\\\\\"english\\\\\\\" value=\\\\\\\"0\\\\\\\"/>
</languages>
<calification>20</calification>
<parser>atopeite.app.MSNSearchParser</parser>
</search>
</atopeite>

A continuación la clase XmlLoad es algo así:

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:

private Hashtable getAtributos(Node nodo)
{
NamedNodeMap attrs = nodo.getAttributes();
Hashtable table = new Hashtable();

int size = attrs.getLength();

for(int i=0;i<size;i++)
{
Node attr = attrs.item(i);
table.put(attr.getNodeName(),attr.getNodeValue() );
//System.out.println(\\\\\\\"Insertando parámetro: \\\\\\\" + attr.getFirstChild().getNodeValue() );
}

return table;
}

Bueno yo creo que con esto ya tienes para empezar con el tema del xml.

A continuación podrías hacerte una clase contenedora que invoque la clase anterior para cargar los datos del xml y crear la estructura adecuada:

public static Vector getSearchs()
throws AppException
{
if(searchs == null)
{
XMLLoad load = new XMLLoad();

searchs = load.getSearchs();
}
return searchs;
}

y por último desde el jsp se utlizaría de la siguiente manera:

<jsp:useBean id=\\\\\\\"container\\\\\\\" class=\\\\\\\"atopeite.app.SearchContainer\\\\\\\"/>

<table>
<tr>
<%
Vector searchs = container.getSearchs();
if(searchs != null)
{
int n = searchs.size();
for(int i=0;i<n;i++)
{
Search s = (Search)searchs.elementAt(i);
%>
<td><div class=\\\\\\\"n_navegador\\\\\\\">
<input type=\\\\\\\"checkbox\\\\\\\" name=\\\\\\\"<%=s.getId()%>\\\\\\\" checked><%=s.getName()%></div>
</td>
<%
}

}
else
{
%>
Lista de buscadores no disponible!!
<%
}
%>

</tr>
</table>

Bueno esto es todo, no se si es lo que querías o preferías algo mejor diseñado, de todas formas espero que te sirva de ayuda.

venga un saludo.

 
Re: Re: Extraer datos de un xml con jsp
Enviado por Eufelia Murillo el día 12 de octubre de 2005

Gracias por tu ayuda espero poder hacerlo bien.

Ah. soy mujer.

 



Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados