35 messaggi dal 11 aprile 2002
Ho un problema con la lettura di un file xml rss

Il problema è il seguente:

in alcuni casi mi dice che è necessario oggetto quando imposto

strDescription = objNode2.firstChild.nodevalue

L'errore è il seguente

Errore di run-time di Microsoft VBScript error '800a01a8'
Necessario oggetto: '[object]'

Ho notato che il probelma potrebbe nascere quando l'elemento è vuoto, ma non ne sono sicuro qualcuno ha idea del motivo dell'errore e come preveniirlo?

LISTATO (QUASI) COMPLETO

Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0")
objXML.async = false
objXML.setProperty "ServerHTTPRequest", True
objXML.validateOnParse =true
objXML.preserveWhiteSpace = false
objXML.Load("filexml rss...")
Set objNodeList = objXML.getElementsByTagName("item")
FOR EACH objNode IN objNodeList
FOR EACH objNode2 In objNode.childNodes
SELECT CASE objNode2.nodeName
CASE "description"
' QUI AVVIENE L'ERRORE (NON SEMPRE, PERCHE??!!)
strDescription = objNode2.firstChild.nodevalue
END SELECT
NEXT
NEXT


Molte grazie e buona epifania - non si finisce mai di lavorare!! :)
BD
2.907 messaggi dal 15 maggio 2001
Contributi
FOR EACH objNode2 In objNodeList.childNodes 


e non

In objNode.childNodes

xchè objNode non è un oggetto
35 messaggi dal 11 aprile 2002
Come dice tu mi da:

Errore di run-time di Microsoft VBScript error '800a01b6'
Proprietà o metodo non supportati dall'oggetto: 'childNodes'

Il listato che ho scritto funziona, da un errore solo ogni tanto e credo nel caso in cui l'elemento si vuoto.

Altri suggerimenti?
Grazie
Modificato da blackd13 il 06 gennaio 2005 21.42 -
35 messaggi dal 11 aprile 2002
Praticamente se objNode2.firstChild.nodevalue è vuoto avviene l'errore "necessario oggetto"
2.907 messaggi dal 15 maggio 2001
Contributi
upss chiedo scusa mi sono confuso !

giustamente

FOR EACH objNode IN objNodeList
FOR EACH objNode2 In objNode.childNodes

mi sembrava che non fosse stato creato l'oggetto... ritiro quello che ho scritto

A questo punto direi di fare un controllo..

x esempio :

Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0") 
objXML.async = false 
objXML.setProperty "ServerHTTPRequest", True 
objXML.validateOnParse =true 
objXML.preserveWhiteSpace = false 
caricato=objXML.Load("filexml rss...") 

if Not (caricato) then
Response.write "Nessuna news da visualizzare" 
Else
Set objNodeList = objXML.getElementsByTagName("item") 
FOR EACH objNode IN objNodeList 
FOR EACH objNode2 In objNode.childNodes 
SELECT CASE objNode2.nodeName 
CASE "description" 
' QUI AVVIENE L'ERRORE (NON SEMPRE, PERCHE??!!) 
strDescription = objNode2.firstChild.nodevalue 
END SELECT 
NEXT 
NEXT 
end if


Modificato da rome il 06 gennaio 2005 21.55 -
35 messaggi dal 11 aprile 2002
Il listato che ho mandato è semplificato, il controllo che tu mi consigli lo faccio già il problema è di altra natura, il file viene caricato correttamente ma l'elemento è vuoto, non c'è un controllo per verificare che un elemento non sia vuoto?
2.907 messaggi dal 15 maggio 2001
Contributi
non capisco perchè ti vada in errore se il valore è vuoto...


prova con:

if Len(objNode2.firstChild.nodevalue) > 0 then
strDescription = objNode2.firstChild.nodevalue
end if

oppure con

if (objNode2.firstChild.nodevalue) then
strDescription = objNode2.firstChild.nodevalue
end if

xò è una cosa anomala....


35 messaggi dal 11 aprile 2002
provo ma credo che non funzioni perchè l'errore me lo da proprio il comando

objNode2.firstChild.nodevalue

quindi anche se lo metto dentro la funzione LEN non dovrebbe cambiare...

Ti ringrazio comunque, se hai altre idee (tu o qulacun'altro) fammi sapere

Ciao
BD

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.