Foros del Web » Programación para mayores de 30 ;) » Java »

Usar DOM para parsear xml

Estas en el tema de Usar DOM para parsear xml en el foro de Java en Foros del Web. Hola estoy haciendo mis primeras pruebas y tengo el siguiente problema: tengo este XML: <?xml version="1.0" encoding="UTF-8"?> <portfolio> <stock> <symbol>SUNW</symbol> <name>Sun Microsystems</name> <price>17.1</price> </stock> <stock> ...
  #1 (permalink)  
Antiguo 04/10/2004, 10:29
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
Usar DOM para parsear xml

Hola estoy haciendo mis primeras pruebas y tengo el siguiente problema:
tengo este XML:

<?xml version="1.0" encoding="UTF-8"?>
<portfolio>
<stock>
<symbol>SUNW</symbol>
<name>Sun Microsystems</name>
<price>17.1</price>
</stock>
<stock>
<symbol>AOL</symbol>
<name>America Online</name>
<price>51.05</price>
</stock>
<stock>
<symbol>IBM</symbol>
<name>International Business Machines</name>
<price>116.10</price>
</stock>
<stock>
<symbol>MOT</symbol>
<name>MOTOROLA</name>
<price>15.20</price>
</stock>
</portfolio>

y en error se me presenta con el siguiente codigo:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import dombean.*;
import java.io.*;
import java.util.*;

public class ejemploDOM
{
public static void main(String argv[]) throws Exception
{
//String file = new String(argv[0]);

MyDOMParserBean domparser= new MyDOMParserBean();
Document doc = domparser.getDocument("C:/java/ejemplos xml/stocks.xml");
Node node=doc.getDocumentElement();
int type = node.getNodeType();
System.out.println("\n"+type);
NodeList childNodes = node.getChildNodes();
String elementName = node.getNodeName();
System.out.println("\n"+elementName);

Node node2 = childNodes.item(0);
type = node2.getNodeType();
System.out.println("\n"+type);
elementName = node2.getNodeName();
System.out.println("\n"+elementName);
String data = node2.getNodeValue().trim();
System.out.println("\n"+data+"\n");
}
}


La salida me muestra:

1

portfolio

3

#text

pero segun yo deberia mostrar stock en lugar de #text, ademas que si es text ¿porque en data no me muestra nada?
  #2 (permalink)  
Antiguo 04/10/2004, 14:07
Avatar de hugo777  
Fecha de Ingreso: enero-2002
Ubicación: Lima, Perú
Mensajes: 757
Antigüedad: 22 años, 3 meses
Puntos: 1
Hola, creo que lo que quieres, es esto:

import javax.xml.parsers.*;
import org.w3c.dom.*;
//import dombean.*;
import org.apache.xerces.parsers.DOMParser;
import java.io.*;
import java.util.*;

public class EjemploDOM
{
public static void main(String argv[]) throws Exception
{
DOMParser parser = new DOMParser();
parser.parse("D:/hcordero/de_prueba/ejecutables/stocks.xml");
//MyDOMParserBean domparser= new MyDOMParserBean();
Document doc = parser.getDocument();

Node node=doc.getDocumentElement();
int type = node.getNodeType();
System.out.println("ROOT type: ["+type+"]");
NodeList childNodes = node.getChildNodes();
String elementName = node.getNodeName();
System.out.println("ROOT elementName: ["+elementName+"]");

for(int i=0;i<childNodes.getLength(); i++) {

Node node2 = childNodes.item(i);
int tipo = node2.getNodeType();
String nombreElemento = node2.getNodeName();

if(!nombreElemento.equals("#text")) {
System.out.println("NODO("+i+"): elementName["+nombreElemento+"] - type["+tipo+"]");

NodeList childNodes2 = node2.getChildNodes();
for(int j=0;j<childNodes2.getLength(); j++) {
Node node3 = childNodes2.item(j);
String nombreElemento3 = node3.getNodeName();
if(!nombreElemento3.equals("#text")) {
Node firstChild=node3.getFirstChild();
if(firstChild != null) {
String childNodeValue=firstChild.getNodeValue();
System.out.println("\t NODO("+j+"): data["+childNodeValue+"]");
}
}
}
}
}
}
}
__________________
Saludos,

H@C..
  #3 (permalink)  
Antiguo 05/10/2004, 10:01
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
gracias voy a checar y te aviso
  #4 (permalink)  
Antiguo 05/10/2004, 10:10
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
si gracias eso era lo que necesitaba y solo tuve que bajarme el Xerces-J que no lo estaba utilizando
  #5 (permalink)  
Antiguo 05/10/2004, 10:57
Avatar de hugo777  
Fecha de Ingreso: enero-2002
Ubicación: Lima, Perú
Mensajes: 757
Antigüedad: 22 años, 3 meses
Puntos: 1
Hola, asi es, el ejemplo modificado tuyo lo hice con el DOM de xerces, sin embargo el programita debe funcionar con el DOM de oracle, o cualquiera otro parse que implemente el DOM estandar en JAVA.
__________________
Saludos,

H@C..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:20.