Newsgroup: it.comp.java
Titolo: Semplice domanda su parsing xml

Ciao a tutti!!!
Faccio un parsing di un file xml attraverso del codice come questo:
while(xml.getnexttag()) {
    if(xml.istag("channel")) {
      System.out.println("Open clima informations");
     } else if(xml.istag("description")) {
     System.out.println("description =\""+xml.getcontent()+"\"");
Supponiamo che nel mio file xml ci siano più tag con lo stesso nome
(per esempio "description") ma io volessi poter scegliere di estrarre
il contenuto del 2' piuttosto che del 3' che compare.Come dovrei fare?
Tenete conto che il file è da URL e quindi non posso io modificarlo e
dare quindi nomi diversi ai tags.
Grazie.


Cos'è, una domanda trabocchetto?

> Cos'è, una domanda trabocchetto?
NO!E' una domanda come tutte le altre.Rileggi che magari tutto sarà
più chiaro.Voglio solo sapere come fare a decidere di quale tag
leggerne il contenuto.Questo perchè nello stesso file xml ci sono più
parti con identico tag ma contenuto diverso ed a me interessa uno in
particolare.Dite che l' unica soluzione è inserire un contatore e poi
fare un break quando arriva al tag col contenuto che mi interessa?

 fare un break quando arriva al tag col contenuto che mi interessa?
Direi di sì (a parte il break: magari ti interessa anche altra roba); ma se
illustri minimamente le classi che usi si puo' capire meglio.

 fare un break quando arriva al tag col contenuto che mi interessa?
Premetto che la tua rischiesta e' generica, per cui la risposta non puo' 
che esserlo altrettanto.
Non so quanto valida sia questa soluzione: non e' detto che tutti i 
parser leggano in modo sequenziale il file.
Rischi di trovare un parser che legge il file, carica i nodi in una 
struttura ordinata in qualche modo (diverso da quello del file 
originale) e ti ritorna un nodo diverso da quello che ti aspettavi.
Questo e' il tipico caso di errore che quando si verifica fa impazzire 
chi deve risolverlo.
Inoltre e' un errore anche a livello logico: non esiste nessuna 
specifica che indichi se/come i nodi di un xml vadano ordinati.
Non a caso per questo esistono gli attributi.
Ciao,
Paolo

Ciao a tutti!
Premetto che non mi ero arrabbiato e mi scuso con tutti se ho dato
quell' impressione.
Il parser che utilizzo è fatto "in casa" e finora mi ha sempre preso i
tag in modo sequenziale:ci sono una serie di if-else con i quali
prende il primo tag e verifica se fa parte di uno di cui mi interessa
il contenuto altrimenti passa al secondo tag e cosi via.
Se non tramite un contatore come altro potrei "dire" di darmi il
contenuto di un tag piuttosto che dell' altro?Se il file è simile a
questo ed a me interessa il contenuto soltanto del primo o del secondo
"description":
<description>Weather for Mechelen, BE</description>
  <language>en-us</language>
  <lastBuildDate>Mon, 05 Mar 2007 10:50 am CET</lastBuildDate>
  <ttl>60</ttl>
  <weather:location city="Mechelen" region="" country="BE" />
  <weather:units temperature="F" distance="mi" pressure="in"
speed="mph" />
 - <image>
  <title>Weather</title>
  .....
  <link>http</link>
  ...
  </image>
- <item>
  <pubDate>Mon, 05 Mar 2007 10:50 am CET</pubDate>
- <description>
.........
 Partly Cloudy, 50 F<BR /><BR />
 <b>Forecast:</b><BR />
  Mon - Rain/Wind. High: 50 Low: 47<br />
  Tue - Light Rain/Wind. High: 51 Low: 47<br />
......
  </description>
Grazie.

 tag in modo sequenziale: [...]
In questo caso il problema che avevo prospettato non sussiste e la tua 
soluzione e' adeguata.
Potrebbero esserci problemi in futuro se altri sviluppatori mettessero 
mano al codice e cambiassero il parser, ma siamo nel mero campo delle 
speculazioni ipotetiche :-)
Ciao,
Paolo