Costruzione file xml

venerdì 22 gennaio 2016 - 15.31
Tag Elenco Tags  C#  |  .NET 4.0

svipla Profilo | Senior Member

Ciao a tutti
devo realizzare un'applicazione WCF che scambia dati con altri sistemi attraverso file xml.
Dato che i file xml sono tanti e grandi, devo ogni volta ricostruirmi la struttura o c'è un modo che permette di salvare lo schemo e inserire i dati in maniera veloce?
Considerate che è capitato raramente di lavorare con file xml.
Grazie mille

Gluck74 Profilo | Guru

Ciao, hai diversi metodi per poter lavorare con XML, vedi tu quale ti è più comodo:
la prassi generale sarebbe quella di avere una classe corrispondente che rispecchia la struttura XML del file. Tale classe la puoi creare a mano e farla creare da tool appositi.
Quindi con un semplice comando della classe XmlSerializer (deserialize/serialize) puoi leggere i dati ed importarli nella classe e viceversa

Puoi usare anche Linq ed evitare di crearti questa classe. Ecco in dettaglio cosa puoi fare:

METODO 1:
Utilizzare la libreria Linq to XML.
Ti permette di vedere il file XML come un "albero" in memoria, interrogarlo e modificarlo come se fosse una tabella di un DB (se sei già pratico di Linq).
Hai una guida completa qui: https://msdn.microsoft.com/en-us/library/bb387098.aspx
Un esempio pratico qui: http://www.dotnetcurry.com/linq/564/linq-to-xml-tutorials-examples

METODO 2:
Utilizzare il tool di VS 2012.
Dato un file XML (o anche json), visual studio ti permette di generare automaticamente la classe corrispondente per rappresentare tutti i dati contenuti.
Trovi qui un buon esempio esplicativo: http://www.c-sharpcorner.com/UploadFile/pranayamr/generate-class-from-json-xml-in-visual-studio/

METODO 3:
Utilizzare il tool XSD.
È un eseguibile che puoi utilizzare per generare un file XSD, che sarà il traduttore del tuo XML per generare la classe corrispondente (se non hai VS 2012 o superiori)
Puoi trovare un esempio di utilizzo qui: http://www.codeproject.com/Articles/11317/From-XML-to-Strong-Types-in-C
N.B.: sempre se non hai VS adatto, questo tool, con poca ricerca, lo trovi anche come plugin per visual studio


Spero di esserti stato utile

____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

maui.80 Profilo | Junior Member

Ciao a tutti, ho provato a creare un xml seguendo la guida ma nel momento in cui metto l'istruzione di save mi da un errore:

Errore 1 Risoluzione dell'overload non riuscita perché nessun 'Save' accessibile può essere chiamato con questi argomenti:
'Public Sub Save(writer As System.Xml.XmlWriter)': Impossibile convertire il valore di tipo 'String' in 'System.Xml.XmlWriter'.
'Public Sub Save(textWriter As System.IO.TextWriter)': Impossibile convertire il valore di tipo 'String' in 'System.IO.TextWriter'.
'Public Sub Save(stream As System.IO.Stream)': Impossibile convertire il valore di tipo 'String' in 'System.IO.Stream'. C:\inetpub\wwwroot\AppSalone\AppSalone\Sincro.xaml.vb 122 9 AppSalone

Vi posto la funzioncina di prova che ho fatto:

Dim document As New XDocument( New XDeclaration("0.1", "utf-8", "yes"), New XElement("Students", New XElement("Student", New XElement("Name", "Jitesh"), New XElement("Email", "jitesh@asphelps.com"), New XElement("City", "Buxar") ) ) ) ' document.Save(docupath) Dim sw As New StringWriter() Dim xWrite As XmlWriter = XmlWriter.Create(sw) document.Save(xWrite) xWrite.Dispose() ' Save to Disk document.Save("C:\Something.xml")

Geronimo79 Profilo | Junior Member

Ciao, per creare un xml io ho usato questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Prova ad adattarlo a ciò che ti serve.
Un saluto.

maui.80 Profilo | Junior Member

Grazie, provo ad adattarlo e ti faccio sapere.

Nel frattempo ti ringrazio
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5