Como extraer el valor de un nodo con DOM
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.
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.
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'.
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!!!!!!!
EL BUEN JAKARTA DIGESTER, SOLO CONSTRUYES TUS REGLAS Y EN DOS QUE TRES PATADAS PARSEAS AL XML EXTRAYENDO LA INFORMACION QUE QUIERES!!!!!!!
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"));
}
}
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"));
}
}