Newsgroup: it.comp.www.asp
Titolo: Problema con .selectNodes e namespace

Premetto che asp non è il mio linguaggio ed è la prima volta che ho a
che fare con xml.
Ho un file xml (non creato da me):
<?xml version="1.0" encoding="UTF-8" ?>
<Domanda xmlns:oc="OggettiCondivisi" xmlns:mc="ModuloL20Condiviso"
xmlns:ns1="ModuloDGR352Condiviso" xmlns:my="http://
schemas.microsoft.com/office/infopath/2003/myXSD/2006-05-16T13:11:52
"
xmlns="">
<Referente>
  <oc:Nome>Tizio</oc:Nome>
  <oc:Cognome>Caio</oc:Cognome>
</Referente>
</Domanda>
e del codice asp per il parsing:
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False
strFile = Server.MapPath("./documento.xml")
objXML.Load(strFile)
Set Items = objXML.selectNodes("//Domanda")
For i = 0 to (Items.Length-1)
	Set referente = Items(i).selectNodes("Referente")
	For n = 0 to (referente.Length-1)
		Set nome = referente(n).selectNodes("Nome")
		Set cognome = referente(n).selectNodes("Cognome")
		Response.Write(nome&" "&cognome)
		Set nome = nothing
		Set cognome = nothing
	Next
	Set referente = Nothing
Next
L'errore che ottengo (alla riga del Response.Write) è "Errore di run-
time di Microsoft VBScript error '800a01c2' - Numero errato di
argomenti o assegnazione di proprietà non valida ".
Come si nota nel file xml, al livello dei nodi "Nome" e "Cognome"
interviene un namespace "oc" e credo che il problema sia lì. Come devo
modificare il codice asp per fare sì che tenga conto del namespace?
Grazie.

 Grazie.
Se non ricordo male devi impostare le property del tuo namespace:
objXml.setProperty "SelectionNamespaces", _
        "xmlns:mc='ModuloL20Condiviso' " & _
        "'xmlns:ns1="ModuloDGR352Condiviso' " & ...
Ciao
-- 
AZ [Microsoft - .NET MVP]
Mia Home page: 
http://ciclismo.sitiasp.it
Asp.Net community: 
http://www.aspitalia.com
Il mio blog: 
http://blogs.aspitalia.com/az
 

         "'xmlns:ns1="ModuloDGR352Condiviso' " & ...
Innanzitutto razie per l'aiuto.
Ho modificato il codice come segue:
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False
strFile = Server.MapPath("./documento.xml")
objXML.Load(strFile)
objXML.setProperty "SelectionNamespaces",
"xmlns:oc='ModuloL20Condiviso'"
Set Items = objXML.selectNodes("//DomandaContributoInterventi")
For i = 0 to (Items.Length-1)
	Set referente = Items(i).selectNodes("/Referente")
	For n = 0 to (referente.Length-1)
		Set nome = referente(n).selectNodes("/oc:Nome")
		Set cognome = referente(n).selectNodes("/oc:Cognome")
		call var(nome&" "&cognome)
		Set nome = nothing
		Set cognome = nothing
	Next
	Set referente = Nothing
Next
e in effetti qualcosa è cambiato nel senso che adesso al posto
dell'errore mi dà la pagina bianca.
Una curiosità: quel 'ModuloL20Condiviso' cui fa riferimento il
namespace dove dovrebbe stare?

 namespace dove dovrebbe stare?
Sono i namespace che c'erano nel tuo documento xml:
<Domanda xmlns:oc="OggettiCondivisi" xmlns:mc="ModuloL20Condiviso"
xmlns:ns1="ModuloDGR352Condiviso" xmlns:my="http://
schemas.microsoft.com/office/infopath/2003/myXSD/2006-05-16T13:11:52
"
xmlns="">
Ciao


Risolto:
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False
strFile = Server.MapPath("./documento.xml")
objXML.Load(strFile)
objXML.setProperty "SelectionNamespaces",
"xmlns:oc='ModuloL20Condiviso'"
Set Items = objXML.selectNodes("//DomandaContributoInterventi")
For i = 0 to (Items.Length-1)
	Set referente = Items(i).getElementsByTagName("Referente")
	For n = 0 to (referente.Length-1)
		Set nome = referente(n).getElementsByTagName("oc:Nome")
		Set cognome = referente(n).getElementsByTagName("oc:Cognome")
		call var(nome(0).text&" "&cognome(0).text)
		Set nome = nothing
		Set cognome = nothing
	Next
	Set referente = Nothing
Next
Oltre al tuo consiglio, ho sostituito selectNodes con
getElementsByTagName (almeno nei tag che non vanno parsati
ricorsivamente), "nome" con "nome(0).text" e ho tolto gli slash dai
nomi dei tag.
Non so esattamente perché ma funziona.