>Hai ragione, allego il file xml cosi` si comprende. Io ho seguito
>quasi completamente il tuo articolo, e` cosi` che ho scoperto
>cosa potevo fare e mi e` venuta l`idea di farlo.
Il problema sta proprio nel fatto che hai letto *quasi* completamente l'articolo e hai adattato meccanicamente uno degli esempi proposti al tuo caso, senza ragionarci più di tanto. 
Mi limiterò quindi a proporti la soluzione, senza però spiegarti niente dato che rileggendo con attenzione l'articolo capirai il significato di ogni singolo comando e relativa sintassi:
USE tempdb;
DECLARE @xmlDoc xml;
/* Carico l'intero file XML in una variabile XML */
SET @xmlDoc = (
SELECT Q.BulkColumn
FROM OPENROWSET(BULK 'C:\Users\Lorenzo\Documents\Persone.xml', SINGLE_CLOB) AS Q
);
/* Eseguo la stessa query utilizzando la funzione OPENXML */
DECLARE @hdoc int
EXEC sp_xml_preparedocument @hdoc OUTPUT, @xmlDoc;
SELECT *
FROM OPENXML (@hdoc, '/Id_Persone/dbo.Persone', 2)
WITH (
FirstName nvarchar(10) 'Nome',
LastName nvarchar(10) 'Cognome',
Phone nvarchar(10) 'Telefono'
);
EXEC sp_xml_removedocument @hdoc;
/* Rappresento in forma relazionale il documento
** utilizzando i metodi nodes e value
*/
SELECT
myColumn.value('Nome[1]', 'nvarchar(10)') AS FirstName
, myColumn.value('Cognome[1]', 'nvarchar(10)') AS LastName
, myColumn.value('Telefono[1]', 'varchar(10)') AS Phone
FROM @xmlDoc.nodes('/Id_Persone/dbo.Persone') AS myTable(myColumn);
/* Output:
FirstName LastName Phone
---------- ---------- ----------
Antonio Rossi 0812345678
Bartolo Verdi 0812345876
(2 row(s) affected)
*/
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org