Copiare un datatable in un file xml

giovedì 11 giugno 2009 - 10.38

pippo_pluto Profilo | Newbie

ciao...so che esiste il metodo datatable.writexml() ...volevo però chiedervi un consiglio...a me serve salvare il datatable per mandare il file xml and una libreria che fa grafici per poter appunto graficare i valori contenuti nel datatable...quindi che mi consigliate di mettere come parametro al metodo writexml(....)? oppure se avete altri consigli..beh ditemi pure :)
ciao e grazie

chiccomox Profilo | Junior Member

Cacchio non sapevo di questo utilissimo metodo del datatable. Stando alla documentazione di microsoft il metodo supporta vari overload quindi puoi passarci uno stream o semplicemente un file xml sul quale verrano salvati i dati. Per es in C#:

DataTable dt = new DataTable("MyDataTable"); dt.WriteXml(@"C:\MyServer1\DataTable.xml");

oppure su una stringa:

System.IO.StringWriter writer = new System.IO.StringWriter(); dataTable.WriteXml(writer, XmlWriteMode.WriteSchema, false); string xmlFromDataTable = writer.ToString();


Chiccomox
http://www.dotnetpertutti.com/
http://www.windowspertutti.com/







pippo_pluto Profilo | Newbie

ho provato in effetti a fare la seguente cosa dopo aver messo detto app_data un file xml chiamato appunto file.xml
datatable t = new datatable("datatable");
t.WriteXml(@"C:/.../App_Data/file.xml");

mi da il seguente errore:

Errore server nell'applicazione '/applicazione'.
Impossibile serializzare la DataTable. Nome di DataTable non impostato.


Jeremy Profilo | Guru

Ciao.
La DataTable non è serializzabile ..... prova ad usare lo stesso metodo per il dataSet.

Facci sapere....
Ciao.

chiccomox Profilo | Junior Member

ciao a tutti,

ho provato questo codice e non mi ha dato errore:

Dim dt As New DataTable("pippo") dt.WriteXml("C:\temp\myDataTable.xml", XmlWriteMode.IgnoreSchema)

Con il framework 2.0, 3.0 e 3.5. Qualcuno ha fatto altre prove?

Grazie e ciao

Chiccomox
http://www.dotnetpertutti.com/
http://www.windowspertutti.com/

Jeremy Profilo | Guru

>ciao a tutti,
>
>ho provato questo codice e non mi ha dato errore:
>
> Dim dt As New DataTable("pippo")
>dt.WriteXml("C:\temp\myDataTable.xml", XmlWriteMode.IgnoreSchema)
>
>Con il framework 2.0, 3.0 e 3.5. Qualcuno ha fatto altre prove?
>

Con l'opzione XmlWriteMode.IgnoreSchema, vengono scritti i dati contenuti nell'oggetto DataTable(in questo caso) come dati XML, senza uno schema XSD.
http://msdn.microsoft.com/it-it/library/system.data.xmlwritemode.aspx

Ciao.

pippo_pluto Profilo | Newbie

Dim dt As New DataTable("pippo") dt.WriteXml("C:\temp\myDataTable.xml", XmlWriteMode.IgnoreSchema)

anche a me ha funzionato così ma credo perchè dt non ha dati. nel momento in cui vado a scrivere un file xml da un datatable contenente dati mi si ripresenta l errore.

Jeremy Profilo | Guru

Ciao.
Prova a vedere se questo progettino di esempio può esserti utile.

Facci sapere...
Ciao

danvagna Profilo | Junior Member

ciao a tutti...mi intrometto in questa discussione per una domanda forse banale... dovrei fare una cosa simile ossia caricara un datatable in un file xml...il fatto è che però non voglio caricare tutte le righe ma solo quelle che soddisfano una certa condizione..è possibile?
in pseudocodice qualcosa del genere
perogni (riga del datatable) if (condizione) scrivi riga in file xml

Jeremy Profilo | Guru

Ciao,
Puoi creare una copia della DataTable e cancellare le righe che non soddisfano la condizione.

Ciao.

danvagna Profilo | Junior Member

ah giusto! non avevo proprio pensato a questa soluzione..grazie mille!!

chiccomox Profilo | Junior Member

Ciao

puoi anche utilizzare il metodo select per fare una query sul tuo DataTable, es:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciao
http://www.dotnetpertutti.com/
http://www.windowspertutti.com/

pippo_pluto Profilo | Newbie

finalmente ho risolto!!! bastava aggiungere un semplice riga prima della scrittura del file xml
posto la soluzione magari potrebbe servire a qualcuno :)

DataTable a = new DataTable("a");
....
codice che riempie il datatable a con dai dati
....
a.TableName = "a";
a.WriteXml("C:/~/App_Data/nome_del_file.xml",{true o false a seconda di quello che serve});
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5