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

Java y XML -> Parser SAX

Estas en el tema de Java y XML -> Parser SAX en el foro de Java en Foros del Web. Hola a todos, Tengo un problema, o no termino de entender la teoria. Desde Java puedo parsear un Archivo XML, con DOM y SAX. Con ...
  #1 (permalink)  
Antiguo 27/10/2009, 12:24
 
Fecha de Ingreso: agosto-2009
Mensajes: 3
Antigüedad: 14 años, 8 meses
Puntos: 0
Java y XML -> Parser SAX

Hola a todos,

Tengo un problema, o no termino de entender la teoria.

Desde Java puedo parsear un Archivo XML, con DOM y SAX.

Con DOM, puedo agregar y eliminar elementos sin problema. Pero con SAX, no me cuadra como hacerlo.

Tengo mi XML:
Código:
<?xml version="1.0"?>
<!DOCTYPE agenda SYSTEM "agenda.dtd">
<agenda>
	<contacto>
		<nombre>ABCD</nombre>
                <domicilio>a95</domicilio>
		<telefono>123456789</telefono>
	</contacto>
	<contacto>
		<nombre>ABCDEFYZ</nombre>
                <domicilio>a25</domicilio>
		<telefono>0123456789</telefono>
	</contacto>
</agenda>
Y quiero por medio de SAX, agregar un nuevo "Contacto",
Código:
	<contacto>
		<nombre>ABCDOPIO</nombre>
                <domicilio>abril95</domicilio>
		<telefono>123789</telefono>
	</contacto>
Y al final dejar el XML asi:
Código:
<?xml version="1.0"?>
<!DOCTYPE agenda SYSTEM "agenda.dtd">
<agenda>
	<contacto>
		<nombre>ABCD</nombre>
                <domicilio>a95</domicilio>
		<telefono>123456789</telefono>
	</contacto>
	<contacto>
		<nombre>ABCDEFYZ</nombre>
                <domicilio>a25</domicilio>
		<telefono>0123456789</telefono>
	</contacto>
        <contacto>
		<nombre>ABCDOPIO</nombre>
                <domicilio>abril95</domicilio>
		<telefono>123789</telefono>
	</contacto>
</agenda>
En el parser luego de la lectura tengo un ArrayList con todos los elementos y atributos.

No se si quedo claro, tampoco se si iria aca el post.
Pero el que me entienda y me pueda ayudar, le estare agradecido.
Cualquier cosa ya me avisarán.

Saludos.
  #2 (permalink)  
Antiguo 27/10/2009, 20:57
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Java y XML -> Parser SAX

Hola,

Posiblemente no hay entendido bien la pregunta, pero ...

Cita:
Iniciado por Antroz Ver Mensaje
Con DOM, puedo agregar y eliminar elementos sin problema. Pero con SAX, no me cuadra como hacerlo.
Será porque SAX no está diseñado con ese objetivo. No dudo que sea posible usar SAX para actualizar un documento XML actualmente, pero originalmente no era ese su objetivo, para eso existen otras librerías.

Cita:
Iniciado por Antroz Ver Mensaje
En el parser luego de la lectura tengo un ArrayList con todos los elementos y atributos.
¿Extraes un ArrayList con SAX? ¿Capturas todos los eventos para agregarlos a un árbol? ¿No sería mas adecuado usar una librería DOM directamente?

Saludos,
  #3 (permalink)  
Antiguo 28/10/2009, 07:06
 
Fecha de Ingreso: agosto-2009
Mensajes: 3
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Java y XML -> Parser SAX

Si, te entiendo. Y concuerdo con vos.

Pero, siempre te la complican a la hora de programar.

Se que SAX, no es para modificar XML. Y uso un ArrayList para guardar los eventos.
Lo que paso, es que no enseñan cosas separadas, y quiere que las tratemos así.

Para mi sería mas facil leer el XML con SAX y editarlo con DOM.

Pero si alguien me da una idea para SAX, excelente.
  #4 (permalink)  
Antiguo 29/10/2009, 03:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 67
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Java y XML -> Parser SAX

Hola.

SAX es un parser XML, esto es, te permite pasar una estructura XML a clases Java.

Después de eso, cómo modifiques las clases que contienen la información es cosa tuya. La forma de serializar eso otra vez a XML también es cosa tuya.

Con esto te digo que no existe nada en SAX para modificar un XML. Lo que debes hacer es serializar las clases que representan tu XML para que se escriban en disco, o en memoria, o lo que sea, con un formato de XML (un String, por ejemplo).

Un saludo.
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 17:15.