INFORMATICA MEDICA
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>INFORMATICA</strong> <strong>MEDICA</strong><br />
15. Usare XML con ADO.NET<br />
Prof. Mauro Giacomini
Sommario<br />
• Relazione fra DataSet e XML<br />
• Sincronizzazione fra DataSet e<br />
XMLDataDocument<br />
• Manipolazione di documenti XML con<br />
XMLDataDocument<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
DataSet e XML<br />
• Metodi di DataSet per interagire con XML in<br />
lettura e scrittura<br />
• Generare dei file XML per rappresentare<br />
• la struttura del DataSet (schema)<br />
• Il contenuto dei DataTable (contenuto)<br />
• Oppure schema e contenuti assieme<br />
• Leggere file XML per produrre<br />
• Strutture dati all’interno di DataSet<br />
• Caricare dati in una struttura esistente<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
Metodo WriteXmlSchema<br />
• Metodo della classe DataSet<br />
• Consente di generare un file XML<br />
contenente tutte le informazioni necessarie<br />
a ricreare un DataSet con la stessa struttura<br />
del DataSet che lo ha generato<br />
• Dim ds as New DataSet<br />
• Ds.WriteXmlSchema ()<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
Filestream<br />
• Oggetto del namespace System.IO che consente di<br />
• scrivere i dati contenuti in una struttura dati (dati in un array ad<br />
esempio) in un file<br />
• Leggere i dati contenuti in un file e trasferirli in una struttura dati<br />
• Da specificare:<br />
• Nome file<br />
• Modo di agire sul file<br />
• Create: crea un nuovo file<br />
• Append: aggiunge alla fine del file<br />
• Open: apertura in lettura<br />
• Dim Fs as New FileStream (strNomeFile, _<br />
FileMode.Create)<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
XmlTextWriter<br />
• Appartiene al namespace System.Xml ma richiede<br />
anche variabili da System.Text<br />
• Consente di scrivere file espressi in formato Xml<br />
Dim Fs as New FileStream (strNomeFile, FileMode.Create)<br />
Dim Xw as New XmlTextWriter (Fs, Encoding.Unicode)<br />
• Vuole un file stream dove mettere l’uscita e gli<br />
strumenti di codifica<br />
• Può essere passato a un WriteXmlSchema<br />
ds.WriteXmlSchema (xw)<br />
xw.Close<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
WriteXml<br />
• Si esegue per trasferire in formato XML il contenuto del<br />
dataset.<br />
• Oltre al file dove scrivere si deve indicare anche il<br />
parametro XmlWriteMode<br />
• Valori di XmlWriteMode<br />
IgnoreSchema: scrive solo il contenuto del DataSet senza<br />
informazioni sullo schema<br />
WriteSchema: scrive sia il contenuto del DataSet sia lo schema<br />
DiffGram: scrive il contenuto del DataSet in formato DiffGram<br />
(contenuti originali e quelli correnti)<br />
• In alcuni casi si possono mettere anche solo i cambiamenti:<br />
eseguire il metodo GetChanges del DataSet e poi scrivere<br />
il file XML del DataSet appena generato<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
Uso di WriteXml<br />
Dim ds as New DataSet<br />
Dim fs as New FileStream (“Schema.xml”, FileMode.Create)<br />
Dim xw as New XmlTextWriter (fs, Encoding.Unicode)<br />
ds.WriteXml (xw, XmlWriteMode.IgnoreSchema)<br />
Oppure<br />
ds.WriteXml (xw, XmlWriteMode.WriteSchema)<br />
Oppure<br />
ds.WriteXml (xw, XmlWriteMode.DiffGram)<br />
xw.Close<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
ReadXmlSchema<br />
• Consente di leggere un file XML con<br />
informazioni con lo schema di un dataset e<br />
di generare in un DataSet dell’applicazione le<br />
stesse tabelle e le stesse relazioni tra di loro.<br />
• Dim ds As New DataSet<br />
• Dim fs As New FileStream (“Schema.xml”, FileMode.Open)<br />
• Dim xr As New XmlTextReader (fs)<br />
• ds.ReadXmlSchema (xr)<br />
• xr.Close<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
ReadXml<br />
• Consente di leggere un file XML contenente<br />
dei dati al fine di caricarli in DataTable di<br />
DataSet.<br />
• Se il file XML contiene anche gli schemi il<br />
metodo ReadXml consente di costruire anche<br />
le strutture dati richieste.<br />
• Per questo ReadXml ha un parametro in più:<br />
XmlReadMode<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
Valori di XmlReadMode (1)<br />
• IgnoreSchema: ignora ogni informazione relativa<br />
allo schema eventualmente contenuta nel file e<br />
carica i dati nei DataTable già presenti nel DataSet<br />
• ReadSchema: Legge le informazioni relative allo<br />
schema contenute nel file, genera i DataTable e<br />
dopo carica i dati in esse. Se il DataSet conteneva<br />
già altre tabelle, il metodo aggiunge quelle<br />
richieste, ma si genera un errore se si cerca di<br />
creare un oggetto già esistente<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
Valori di XmlReadMode (2)<br />
• InferSchema: ignora le informazioni relative allo<br />
schema nel file e cerca di inferire lo schema dai dati<br />
presenti. Se il DataSet contiene già uno schema, il<br />
metodo aggiunge le tabelle o le colonne<br />
eventualmente necessarie<br />
• DiffGram: serve per leggere un file contenente un<br />
DiffGram. Il DataSet ricevente è aggiornato con le<br />
modifiche riportate nel file.<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
Valori di XmlReadMode (3)<br />
• Fragment: serve per leggere file XML generati a<br />
seguito dell’esecuzione di query di lettura che<br />
restituiscano i dati in formato XML<br />
• Auto: sceglie il valore più appropriato di questo<br />
parametro in funzione del contenuto del file e dello<br />
stato del DataSet.<br />
Dim ds As New DataSet<br />
Dim fs As New FileStream (“Schema.xml”,FileMode.Open)<br />
Dim xr As New XmlTextReader (fs)<br />
Ds.ReadXml(xr, XmlReadMode.IgnoreSchema)<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
GetXmlSchema - GetXml<br />
• Sempre metodi del DataSet<br />
• GetXmlSchema: restituisce una stringa con la<br />
rappresentazione in formato XML dello schema del<br />
DataSet<br />
• GetXml: restituisce una stringa con la<br />
rappresentazione in formato XML dei dati del<br />
DataSet (non ha parametri simili a XmlWriteMode,<br />
funziona in modo simile a IgnoreSchema).<br />
• Aggiunta di una form di dettaglio dove in una<br />
textbox vegano visualizzati di risultati delle funzioni<br />
GetXmlSchema e GetXml.<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
XmlDataDocument<br />
• Oggetto utile per mantenere la sincronizzazione tra<br />
la rappresentazione relazionale dei dati (DataSet) e<br />
quella gerarchica (XML)<br />
• Del namespace System.Xml<br />
• Per caricare<br />
Dim xd As New XmlDataDocument<br />
xd.load(“f1.xml”)<br />
• Per specificare un legame a un DataSet già<br />
istanziato e popolato<br />
• Dim xd As New XmlDataDocument (ds)<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
Esempio di sincronizzazione<br />
• Se non c’è il DataSet, va creato, sincronizzarlo con il<br />
XmlData e popolare solo uno dei due oggetti<br />
Dim ds As New DataSet<br />
Dim xd As New XmlDataDocument (ds)<br />
xd.load(“file.xml”)<br />
Oppure<br />
Dim ds As New DataSet<br />
Dim xd As New XmlDataDocument<br />
xd.load(“file.xml”)<br />
ds=xd.DataSet<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
XmlNode<br />
• Tag: elemento più semplice di un file XML<br />
• XmlNode: unità elementare di<br />
XmlDataDocument<br />
• Contiene sostanzialmente un record della<br />
tabella<br />
• Diversi tipi di nodi<br />
• Proprietà XmlNodeType<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
XmlNodeType (valori - 1)<br />
• Attribute: tag attributo, può essere seguito da un<br />
child di tipo text, non è child di nulla<br />
• Comment: commento nel testo xml, non ha child,<br />
può essere child di oggetti di tipo Document e<br />
Element<br />
• Document: identifica l’intero documento, può essere<br />
seguito da: element, xmlDeclaration, Comment<br />
• DocumentFragment: frammento di documenti, può<br />
essere seguito da: element, xmlDeclaration,<br />
Comment<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14
XmlNodeType (valori - 2)<br />
• Element: elemento di inizio di una struttura, può<br />
essere seguito da Element, Comment, Text<br />
• EndElement: indica la fine di un elemento<br />
• Text: testo contenuto in un nodo, non ha figli, può<br />
essere figlio di Attribute, Element o<br />
DocumentFragment<br />
• XmlDeclaration: dichiarazione dello standard XML<br />
usato. Primo nodo di un documento.<br />
Inf. Med. - 15. Uso di XML con<br />
ADO.NET - A.A. 2013/14