Hace un tiempo necesitaba leer con Java un XML para generar un menú dinámico JavaScript desde una consulta a una base de datos, acudí a Google y me encontré con miles de librerías creadas por empresas o emprendedores donde había que llamar a miles de funciones para acceder a las propiedades de un archivo XML. Por lo tanto, aquí les dejo una clase que llamé XMLManager, la cual a través de simples métodos puede acceder a las propiedades un XML.
Obviamente XMLManager es una clase muy básica pero obviamente dependerá de ti mejorarla y optimizarla según tus intereses.
Nota: si se pasa un xml como string, éste no debe contener saltos de lineas.
<raiz>
<padre contenido='padre1'>
<hijo contenido='hijo1_1'></hijo>
<hijo contenido='hijo1_2'></hijo>
</padre>
<padre contenido='padre2'>
<hijo contenido='hijo2_1'>
<nieto contenido='nieto2_1_1'></nieto>
</hijo>
<hijo contenido='hijo2_2'></hijo>
</padre>
</raiz>
class XMLManager{
DocumentBuilderFactory factory;
DocumentBuilder builder;
Document doc;
String string_xml;
static String dato = "contenido";
public void procesarXML( ){
try{
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
doc = builder.parse( new InputSource( new
StringReader( string_xml ) ) );//si es que el xml lo pasamos como String
//doc = builder.parse( new File( string_xml ) );
//si le damos la url de un archivo xml
Node raiz = doc.getChildNodes();
recorrerXML( raiz.getChildNodes() , 0 );
}
catch( SAXException e ){}
catch( IOException e ){}
catch( ParserConfigurationException e ){}
}
}
/*
*piso = 0 -> nodo padre
*piso = 1 -> nodo hijo
*piso = 2 -> nodo nieto
*piso = n -> asi sucesivamente
*/
private void recorrerXML( NodeList lst , int piso ){
if( lst!=null ){
for( int i=0 ; i<lst.getLength() ; i++ ){
obtenerDatos( lst.item( i ) , XMLManager.dato , piso );
generarContenido( lst.item( i ).getChildNodes() , piso+1 );
}
}
}
private void obtenerDatos( Node n , String dato , int piso ){
NamedNodeMap atributos = n.getAttributes();
Node aux = atributos.getNamedItem( dato );
//este codigo es solo para mostrar ordenada la informacion
String tabs = "";
for( int i=0 ; i<piso ; i++ )
tabs += "\n";
if( aux!=null )
System.out.println( tabs+aux.getNodeValue()+" - "+piso );
else
System.out.println( tabs+" null "+piso );
}
Cargando
Leer XML desde Java
martes, 1 de abril de 2008
Suscribirse a:
Enviar comentarios (Atom)
1 comentarios:
no funciona el leer un xml como string, me marca un error en el Document
Publicar un comentario