elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 23:46  


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  [SOLUCIONADO] [DUDA] datos iguales en Atributos XML con SAX
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] [DUDA] datos iguales en Atributos XML con SAX  (Leído 468 veces)
RyogiShiki


Desconectado Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
[SOLUCIONADO] [DUDA] datos iguales en Atributos XML con SAX
« en: 11 Noviembre 2011, 22:11 »

Hola que tal.

Puese que el título no sea lo más descriptivo, pero no halle mejor forma para expresarme. Estaba trabajando con XML para tomar la información de estos y presentarla. Los XML los cojo de una página web. El caso es que no he logrado acceder  a los datos que se encuentran en elementos con atributos iguales. Solo puedo acceder al primer elemento. Les pongo un ejemplo:

Código
<ann>
<anime id="7985" gid="2941429925" type="TV" name="Genshiken 2" precision="TV">
<info gid="2626798855" type="Picture" src="/thumbnails/fit200x200/encyc/A7985-8.jpg"/>
<info gid="2657624020" type="Main title" lang="JA">Genshiken 2</info>
<info gid="2428493304" type="Alternative title" lang="EN">The Society for the Study of Modern Visual Culture 2</info>
<info gid="3635378568" type="Alternative title" lang="JA">&#12370;&#12435;&#12375;&#12369;&#12435;&#65298;</info>
<info gid="1637100485" type="Alternative title" lang="ZH-TW">&#29694;&#35222;&#30740;2</info>
<info gid="1944607895" type="Alternative title" lang="KO">&#54788;&#49884;&#50672; 2</info>
<info gid="365802192"  type="Genres">comedy</info>
<info gid="1000686579" type="Genres">romance</info>
<info gid="2461978479" type="Genres">slice of life</info>
</anime>
</ann>
 

Suponemos que tengo ese pedaso de XML como verán dentro del elemento info, encontramos varias veces el atributo "type" al cual se le asigna un valor, en este caso supongamos sea: "Genres", como se ve este se repite tres veces, para comedy, romance y slice of life. El problema es que al recolectar la información con SAX solamente he podido llegar hasta la primera que es comedy, pero aun no he logrado tomar el valor de las otras dos. Alguien sabe como puedo hacer esto? Los XML que estoy usando son muy engorrosos y tienen cantidades de atributos repetidos con diversos valores. No puedo usar como referencia el valor del atributo gid, porque siempre va a ser diferente.

Gracias a todos de antemano por la ayuda.


« Última modificación: 15 Noviembre 2011, 14:58 por RyogiShiki » En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [DUDA] datos iguales en Atributos XML con SAX
« Respuesta #1 en: 12 Noviembre 2011, 06:12 »

Bueno no importa, ya lo he arreglado. En cierto sentido era muy simple. Poner un flag en el método starElement(...) que me indica que estoy dentro del elemento repetido. Luego en el método endElement(...) si el flag está en true entonces concateno el contenido de characters al atributo que mapea el elemento, justo después de eso pongo el flag en false, así la próxima vez que aparezca el elemento el flag se pone en true de nuevo y el elemento se procesa concatenando el contenido. Lo único es que al principio me deja un null extraño, pero nada que no se pueda arreglar facilmente. Dejo lo que hice por si alguien alguna vez le sirve

startElement:
Código
    public void startElement(String namespaceURI,
String localName,
String qName,
Attributes attr) {
content.setLength(0);
System.out.println("startElement:" + qName); //Debug!
 
for (int i = 0; i < attr.getLength(); i++) {
if (attr.getLocalName(i).equals("name")) {
this.title = attr.getValue(i);
}
}
 
if (qName.equals("info")) {
for (int i = 0; i < attr.getLength(); i++) {
if (attr.getLocalName(i).equals("type")) {
if (attr.getValue(i).equals("Genres")) {
isSetGenere = true;
}
}
}
}
}
 

endElement:
Código
 
public void endElement(String namespaceURI,
String localName,
String qName) throws SAXException {
 
if (isSetGenere) {
this.genere += content.toString() + " ";
}
isSetGenere = false;
}
 

Estoy seguro que para alguien que conoce bien SAX esto es muy simple, porque en realidad es casi que el procedimiento standar. Pero apenas hace poco empecé con SAX y el parseo de XML, llegando a la conclusión, de que es muy fácil si el documento es corto, pero si va tomando mucho contenido hacer el parser es tediosísimo y un completo dolor de cabeza. Por eso digo. ¡Que viva JSON! XD

Si algún MOD está por hay bien puede dar por terminado esto.

Saludos


« Última modificación: 12 Noviembre 2011, 06:14 por RyogiShiki » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines