Estrarre valori specifici da XML dagli attributi dei tag.

domenica 26 luglio 2009 - 17.01

Evander Profilo | Newbie

Salve a tutti ,
Ringrazio tutti anticipatamente .
Premettendo di essere un neofita vi espongo il mio problema.
Stro svluppando un package ssis con SQL Server 2005 , devo estrarre alcuni valori specifici da un XML dotato di XSD associato .
Tali valori sono inseriti all'interno dei tag mediante attributi ossia
Value ="valore " tilte ="nome del campo"

e possono essere nulli. riconoscerei i valori che mi interessano andando a leggere i contenuti dei Title .
vorrei poi assegnare tali valori a delle variabili .

Vi chiedo se qualcuno può suggerirmi un codice , il più semplice possibile, per estrarre tali valori o in C# o in VB .
E' la prima volta che lo faccio e vorrei così capirne anchelaprocedura .
Grazie davvero .

alx_81 Profilo | Guru

>Salve a tutti ,
Ciao

>Premettendo di essere un neofita vi espongo il mio problema.
>Stro svluppando un package ssis con SQL Server 2005 , devo estrarre
>alcuni valori specifici da un XML dotato di XSD associato .
>Tali valori sono inseriti all'interno dei tag mediante attributi
>ossia
> Value ="valore " tilte ="nome del campo"
>
>e possono essere nulli. riconoscerei i valori che mi interessano
>andando a leggere i contenuti dei Title .
>vorrei poi assegnare tali valori a delle variabili .
>Vi chiedo se qualcuno può suggerirmi un codice , il più semplice
>possibile, per estrarre tali valori o in C# o in VB .
Probabilmente potrai usare un task XML atto a fare questa cosa senza scrivere codice, però ti chiedo due cose:
1 - puoi postare un xml di esempio col suo xsd?
2 - vuoi leggere l'xml ciclicamente? hai più item? oppure devi leggere solo una riga?

>Grazie davvero .
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Evander Profilo | Newbie

Ciao , Ti ringrazio per l’attenzione prestatami
Dunque l’ XML è simile al seguente:
<Form id="23332" name="ALLOGGIO " subType="ResocontoPerizia" subClass=" RESOCONTO"> - <UserData id="4434u" type="FormAttributes"> <UserValue value="" title="VIALIBERA" /> <UserValue value="" title="PRATICA_ISPEZZIONE" /> <UserValue value="" title=" MODIFICHE_APPROVATE" /> <UserValue value="" title="MODIFICHE_PROPOSTE" /> <UserValue value="" title="MATERIALE " /> <UserValue type="int" value="14" title="CODICE_CONDOMINIO" /> <UserValue value="QE23" title="TIPO_PERIZIA" /> <UserValue value="" title="DATA_RINVIO" /> <UserValue value="3-4-2025" title="DATA_LAVORI" /> <UserValue value="" title="DATA_FINE_LAVORI" /> </UserData> </Form> <Location id="z5de5" name="Develop" locationId="A546"> - <UserData id="34u "> <UserValue value="Veneto" title="Località" /> <UserValue value="850" title="Altitude" /> <UserValue value="Via Dotto" title="Indirizzo " /> </UserData> </Location>
Per quanto riguarda l’XSD passatomi ho paura che non sia conforme. , infatti non viene approvato dal validatore che ho trovato sul web e in ogni caso potrebbe non essere disponibile in fase operativa (in pratica con SIS me lo auto genererei )
Devo estrarre solo alcuni valori dall’esempio soprastante , es Altitude Località MATERIALE e Pratica ispezione, che come puoi notare possono avere campi vuoti ( estratti dovrebbero generare “null” ). Ogni XML contiene un solo record ; nell’XML reale (davvero eccessivamente lungo per essere postato nella sua interezza ) ci sono gerarchie anche + profonde di quella che si evince in questo.
Con SSIS non riesco ad estrarre i singoli valori che dovrei inserire in un unico record .Mi basterebbe un codice che riconosciuta il valore di Title ricava il corrispondente di Value e lo assegna a una variabile. (anche se preferirei procedere con SSIS …ma ci sto sbattendo la testa da troppo tempo )

alx_81 Profilo | Guru

>Con SSIS non riesco ad estrarre i singoli valori che dovrei inserire
>in un unico record .Mi basterebbe un codice che riconosciuta
>il valore di Title ricava il corrispondente di Value e lo assegna
>a una variabile. (anche se preferirei procedere con SSIS …ma
>ci sto sbattendo la testa da troppo tempo )
Infatti, in questo caso, ti consiglio di studiarti le seguenti cose per poter manipolare l'xml:

System.Xml Namespace:
http://msdn.microsoft.com/en-us/library/system.xml.aspx

Classe XmlReader:
http://msdn.microsoft.com/en-us/library/system.xml.aspx

e un po' di XPath
http://www.w3schools.com/XPath/xpath_syntax.asp

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Evander Profilo | Newbie

Ciao
Io non posso che ringraziarti infinitamente , sto leggendo e piano piano districandomi , appena avrò un risultato consistente posterò la soluzione e Accetto la discussione.

Volevo chiedere una cosa : Ho SQL Server 2005 , e come noto solitamente accetta solo script in VB.
Volevo chiedere se esistono "truschini " per poter usare codici in C# tipo richimi a script esterni ecc ... so che la mia é una domanda apparentemente stupida ma vale la pena di chiedere .

alx_81 Profilo | Guru

>Volevo chiedere una cosa : Ho SQL Server 2005 , e come noto solitamente accetta solo script in VB.
noto a chi??? assolutamente falso! Anzi, non uso MAI VB!

>Volevo chiedere se esistono "truschini " per poter usare codici in C# tipo richimi a script esterni ecc ... so che la mia é una
>domanda apparentemente stupida ma vale la pena di chiedere .
non capisco.. cosa devi fare?

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Evander Profilo | Newbie

Ciao ALX_81 !
Buongiorno !
Davvero grazie per la ta pazienza e attenzione costante!

Mi riferivo alla possibilità di utilizzare Classi scritte in C# su SQLServer 2005 BID .

http://sqlblog.com/blogs/denis_gobo/archive/2007/07/04/1575.aspx

alx_81 Profilo | Guru

>Mi riferivo alla possibilità di utilizzare Classi scritte in C# su SQLServer 2005 BID .
nemmeno BIDS è corretto.. è proprio SSIS 2005 che non accetta C#. Diciamo che Microsoft non è arrivata in tempo col prodotto per dare i due linguaggi (non credo sia stata una scelta).
in 2008 si può, in 2005 no. Ma comunque, non avresti potuto fare un gran che.. Non puoi scrivere classi che poi userai all'interno di ssis come meglio credi. Nello script task puoi solo farti una classettina utile solo all'ambito in cui scrivi codice.


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5