Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Java y XML > Como extraer el valor de un nodo con DOM
-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.

Como extraer el valor de un nodo con DOM
Enviado por vikcen el día 29 de noviembre de 2005

Hola,

Si yo tengo en un documento XML algo como

<nombre_tag>valor_tag</nombre_tag>

como puedo simplemente recuperar el texto \"valor_tag\" y asignarlo a una variable de tipo String.

Gracias, un saludo.

 
Re: Como extraer el valor de un nodo con DOM
Enviado por vikcen el día 30 de noviembre de 2005

He usado el método getNodeValue() y siempre me devuelve null para un nodo como el indicado en el ejemplo, en cambio con getNodeName() si recupero el nombre del tag en este caso 'nombre_tag', el nodo es del tipo ELEMENT_NODE.

 

Re: Como extraer el valor de un nodo con DOM
Enviado por vikcen el día 30 de noviembre de 2005

Vale ya se como va, tendria que volver hacer una llamada a getChildNodes para recuperar un nodo de tipo texto que me da el valor, en este caso 'valor_tag'.

 
Re: Re: Como extraer el valor de un nodo con DOM
Enviado por neossoftware el día 15 de diciembre de 2005

PORQUE KARAJO SE ESTAN PELEANDO CON DOM, SI EXISTEN FRAMEWORKS PARA HACER EL PARSEO EN EL XML COMO

EL BUEN JAKARTA DIGESTER, SOLO CONSTRUYES TUS REGLAS Y EN DOS QUE TRES PATADAS PARSEAS AL XML EXTRAYENDO LA INFORMACION QUE QUIERES!!!!!!!

 
Re: Re: Re: Como extraer el valor de un nodo con DOM
Enviado por Zidboy el día 16 de mayo de 2006

Pero podrias por lo menos poner una URL o un ejemplo de lo que hablas.....al final nadie capto tu aporte....bye

 
Re: Re: Re: Re: Como extraer el valor de un nodo con DOM
Enviado por fescalero el día 17 de mayo de 2006

Hola. Yo lo he hecho de la siguiente manera.

Document document;
org.w3c.dom.Node domNode;


public configuracion(String xml) throws ParserConfigurationException,
SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse( new File(xml) );
domNode = document;
}

este es el constructor de la clase en la que me creo un objeto Node desde el documento xml. Ahora lo que hay que hacer es coger el valor cogiendo los childNodes de este.
Imagina que tengo un documento como este
<?xml version=\'1.0\' encoding=\'windows-1252\'?>
<config>
<bdpruebas>
<url>miurl</url>
<login>milogin</login>
<password>mipass</password>
</bdpruebas>
</config>

Entonces me crearia un metodo en la clase para coger los valores. Po rejempo para la url:

public String bdpruebas_url(){
return document.getChildNodes().item(0).getChildNodes().item(1).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
//-----------------------------------<config>--------------------<bdpruebas>------------------<url>----------------------------[#text]
}

Hay que tener en cuente un detalle:
Cuando ejecutamos la acceion getchild nodes lo que devuelve es:

<config>
[#Text]
<bdpruebas>
[#Text]
<url>miurl</url>
[#Text]
<login>milogin</login>
[#Text]
<password>mipass</password>
</bdpruebas>
</config>

es por eso lo de los valores 0 y 1 al coger los nodos.

Resulta un poco coñazo y estoy imprememtando un metodo para que dado una cadena tipo \'config.bdpruebas.url\' te devuelva el valor, ya que hay metodos para poder preguntar a un nodo si se llama \'bdpruebas\' o lo que sea. Pero para salir del paso funciona.
de todas fomras probare las librerias que han comentado antes.

un saludo. espero que os sirva

 




Re: Como extraer el valor de un nodo con DOM
Enviado por fescalero el día 17 de mayo de 2006

os dejo el codigo para recuperar valores con la ' ruta' del valor que queremos recuperar: a ver si os sirve

package seguridad;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.IOException;

import java.util.StringTokenizer;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class configuracion {

Document document;
org.w3c.dom.Node domNode;

public configuracion(String xml) throws ParserConfigurationException,
SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse( new File(xml) );
domNode = document;
}


/**
* Funcion que devuelve el valor de una camino de fichero xml.
* si no lo encuentra devuelve null.
* @param camino
* @return
*/
public String damevalor(String camino) {
String resultado = null;
StringTokenizer micamino = new StringTokenizer(camino, "/");
Node nodo = domNode;
//Seguimos buscando en los nodos mientras tengamos tokens.
while (nodo != null && micamino.hasMoreTokens() ) {
NodeList nl = nodo.getChildNodes();
String token = micamino.nextToken();
//ponemos nodo a null para obligar a que haya un nodo que nos sirva.
nodo=null;
for ( int i=0;i<nl.getLength();i++){
Node sigNodo =nl.item(i);
String name = sigNodo.getNodeName();
//Si encontramos el elemento salimos del for.
if ( name.equals(token)){
nodo=sigNodo;
i=nl.getLength();
}//if
}//for
}//while
//Ahora en nodo tenemos el nodo que tiene el valor que queremos.
//Siempre que el nodo no sea null.
if (nodo!=null){
resultado = nodo.getFirstChild().getNodeValue();
}
return resultado;
}//fin de damevalor


public static void main(String[] args) {
configuracion c = null;
try {
c = new configuracion("configuracion.xml");
} catch (Exception e) {
System.out.println("error");
}
System.out.println(c.damevalor("config/df/password"));
}

}


 


Tienda
Patrocinados
 

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

Hospedaje web y servidores dedicados linux por Ferca Network