Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Testare esistenza nodo XML

    Salve ragazzi, chiedo l'ennesimo aiuto per la gestione degli XML con ASP...

    Dunque, ho un ciclo che mi legge i vari nodi di un XML e ne stampa l'output in questo modo:

    codice:
    for i=0 to xmlDoc.responseXML.selectNodes("//risultati").length-1 
    id = xmlDoc.responseXML.selectNodes("//risultati/hotelid")(i).text 
    url = xmlDoc.responseXML.selectNodes("//risultati/url")(i).text 
    ... 
    etc 
    
    Response.write id &url &descrizione &etc...
    e fin qui tutto ok.
    Il problema è che ho un campo "descrizione" che può esserci come no. Ovviamente se ne vado a leggere il contenuto e non c'è mi da errore, allora ho pensato di bypassare il problema così:


    codice:
    If Not xmlDoc.responseXML.selectNodes("//risultati/description")(i) is nothing then 
    descrizione = xmlDoc.responseXML.selectNodes("//risultati/description")(i).text 
    Else 
    descrizione = "descrizione mancante" 
    End if 
    
    Response.write id &url &descrizione &etc...

    E anche questo in teoria funziona...
    La cosa assurda però è che se si verifica appunto che il campo description manca, nella variabile descrizione non viene memorizzato "descrizione mancante" ma il contenuto del nodo "description" successivo!!!!

    Questo ovviamente comporta un osfalsamento delle descrizioni relativamente ai rispettivi record, con l'effetto assurdo di stamparmi il testo "descrizione mancante" all'ultimo nodo!
    In pratica se un nodo manca viene memorizzato il valore del successivo facendo scalare tutti gli altri e quindi perdendo ogni corrispondenza...

    Qualcuno ci capisce qualcosa? Come porre rimedio? Oppure, esiste un modo diverso e più efficace per testare l'esistenza di un nodo e memorizzarne il contenuto solo in questo caso?

    Confido in voi, grazie mille e a presto!

  2. #2
    qual'è il codice completo che fa sta cosa?

  3. #3
    Guarda oltre il ciclo non c'è nient'altro...
    posso solo aggiungere che "apro" l'XML così:

    codice:
    set xmlDoc = Server.CreateObject("Msxml2.XMLHTTP") 
    XmlDoc.open "GET",sourceFile, false 
    xmlDoc.send()
    e subito dopo apro il ciclo così come ho riportato prima...
    Tutto qui... hai qualche idea?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.