97 messaggi dal 25 gennaio 2007
Ho questo tipo di file xml

-<annuncio>
-<agenzia>
-<info_agenzia>
</agenzia>
-<info immobili>
</immobili>
-<file_allegati>
<allegato>
</allegato>

</file_allegati>
</annuncio>

Adesso in alcuni file xml la parte in grasetto non viene mensionata e quindi la pagina asp che mi legge il file xml mi và in errore, come posso ovviare a questo problema?
547 messaggi dal 24 maggio 2002
Contributi
Con cosa stai leggendo il file?

Marco.
547 messaggi dal 24 maggio 2002
Contributi
Se l'errore ti viene alzato qundo chiami il load del file ti consiglio di verificare l'errore interroganodo le proprietà objXML.parseError.reason e objXML.parseError.errorCode dell'oggetto XMLDOM.

Se invece l'errore è generato dal tuo codice direi che potrebbe essere sufficiente aggiungere il controllo che il nodo <allegato> ci sia o meno.

Comunque, se l'XML è semplice come quello che hai postato, io preferisco "puntare" il valore dei nodi direttamente con: getElementsByTagName("[tagname]") se la lista di nodi contiene almeno un elemento ne ottengo il valore.

In questo caso il controllo è abbastanza semplice.

Ciao, Marco.
97 messaggi dal 25 gennaio 2007
makbox ha scritto:
Comunque, se l'XML è semplice come quello che hai postato, io preferisco "puntare" il valore dei nodi direttamente con: getElementsByTagName("[tagname]") se la lista di nodi contiene almeno un elemento ne ottengo il valore.

In questo caso il controllo è abbastanza semplice.

Ciao, Marco.


L'xml nella parte allegato è strutturato in questo modo:
<file_allegati>
<allegato id="0">
<id>0</id>
<file_path>Valore</file_path>
</allegato>
<allegato id="1">
<id>1</id>
<file_path>Valore</file_path>
</allegato>
<allegato id="2">
<id>1</id>
<file_path>Valore</file_path>
</allegato>
</file_allegati>

Infatti per verificare se c'é qualkosa all'interno del file_allegati, utilizzo getElementsByTagName() faccio un controllo se è vuoto altrimenti procendo al controllo del tag allegato, il mio problema è verificare quanti allegati ci siano all'interno del tag, perché potrebbe capitare che un file XML abbia 6 allegati, ma un altro ne potrebbe avere solo 3 (in questo caso la pagina mi và in errore) perché avendo io inserito 6 variabili 3 non vengono inizializzate e quindi mi si blocca il tutto.

Spero di essere stato chiaro nella spiegazione e grazie per le risposte.
547 messaggi dal 24 maggio 2002
Contributi
Perfetto, allora invece che valorizzare sei variabili potresti riempire un array.

In VBScript:
Dim myArray()

If [controllo se esiste un determinato allegato ] Then

Redim Preserve myArray( Ubound(myArray) + 1 )
myArray(Ubound(myArray)) = [allegato esistente]

End If



Alla fine tutto quello che devi fare con gli allegati lo fai in un ciclo di for sull'array.

Marco.

P.S. Verifica il codice VBScript è un bel pò che non lo uso....
makbox ha scritto:
P.S. Verifica il codice VBScript è un bel pò che non lo uso....

Ma se proprio ieri ti ho visto alle prese con una pagina in classic asp

Matteo Casati
GURU4.net
97 messaggi dal 25 gennaio 2007
Grazie, per le risposte ho risolto in un altro modo.

Praticamente questo è il codice:

Set fotoallegate = objXmlDom.getElementsByTagName("file_allegati")
if Not fotoallegate(i).text = "" Then
Set fotoallegate1 = objXmlDom.getElementsByTagName
("file_allegati/allegato/file_path")

Dim h
h = 0
For h = 0 To fotoallegate1.length - 1
If h = "0" Then
Set foto1 = objXmlDom.getElementsByTagName
("file_allegati/allegato/file_path")
foto1 = foto1(h).text
End If
If h = "1" Then
Set foto2 = objXmlDom.getElementsByTagName
("file_allegati/allegato/file_path")
foto2 = foto2(h).text
End If
.
.
.
If h = "6" Then
Set foto3 = objXmlDom.getElementsByTagName
("file_allegati/allegato/file_path")
foto3 = foto3(h).text
End If
Next

Questa è un'alternativa un pò pesantina a livello di codice, ma credo che nel mio caso sia abbastanza efficace.
In questo caso carico solo l'effettivo numero, ma non più di 6 allegati che si trovato all'interno del file xml.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.