totti240282 ha scritto:
non ho mai capito perchè devo usare sempre il namespace ?!
Beh, perchè un elemento, come ad esempio il tag <name> contenuto nel documento postato da lsnow, può assumere un significato diverso a seconda del namespace in cui si trova. In quel namespace contiene il testo cercato dall'utente, mentre in un altro potrebbe contenere il nome di una persona o di un film o altro.
Nei documenti XML puoi avere vari frammenti provenienti da diveri namespace ed è opportuno che, nell'effettuare una ricerca, si espliciti il nome completo dell'elemento per evitare che restituisca tag omonimi indesiderati.
Per analogia, sono come le cartelle in un filesystem. Posso capire senza ambiguità che cosa contiene un'immagine chiamata pesca.jpg a seconda che si trovi in una cartella chiamata "frutta" o in una chiamata "sport".
Comunque capisco cosa intendi: per semplicità, se nel documento esiste un elemento di root che porta un namespace, perché il provider non dovrebbe usarlo automaticamente in tutte le mie query LINQ? Se voglio posso sempre indicarne uno diverso...
Forse gli sviluppatori di LINQ to XML hanno voluto mantenere un certo rigore formale e quindi, se un elemento appartiene ad un certo namespace, è richiesto che lo si indichi esplicitamente. Del resto anche quando si facevano query XPath con XmlDocument era obbligatorio fornire il namespace, solo che lì era un po'
meno immediato.
ciao
Modificato da BrightSoul il 05 gennaio 2012 18.38 -