Oppure

Loading
11/09/08 10:24
sergio58
Salve a tutti, vi scrivo per un problema con cui sto combattendo da più di una settimana.
Praticamente non riesco a costruire la classe per ottenere un file xml strutturato come segue:
Questo è il risultato che vorrei:
<Elenco>
  <Campi>
    <Campo Name=RagSociale type="string" lenght="30"/>
     <Campo name=Via type="string" lenght="50"
     <Campo name=citta type="string" lenght="50"
   </Campi>
   <RigaLista>
    <Riga RagSociale="PieroTofy" Via="Via Italia" Citta="Roma"
  ecc. 
  ecc.
  <\RigaLista>


Con il seguente codice riesco ad ottenere il file XML strutturato come appresso.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Xml.Schema.XmlSchemaComplexType
Public Class Form1
    <XmlRootAttribute("Allegati_Clienti_Fornitori")> _
    Public Class DatiElenco
        Public Record As Campi


    End Class
    Public Class Campi
        <XmlAttribute()> _
        Public RagSociale As String
        Public Indirizzo As String
        Public Citta As String
    End Class
 

    Private Sub CreaFile()

        Dim RigaCampi As New Campi
        Dim All As New DatiElenco

        RigaCampi.RagSociale = "PieroTofy"
        RigaCampi.Indirizzo = "Via"
        RigaCampi.Citta = "Roma"
        All.Record = RigaCampi

        Dim writer As New System.Xml.Serialization.XmlSerializer(GetType(DatiElenco))
        Dim file As New System.IO.StreamWriter("c:\ElencoCliFor.xml")
        writer.Serialize(file, All)
        file.Close()

    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CreaFile()
    End Sub
End Class

Output:
<?xml version="1.0" encoding="utf-8" ?> 
- <Allegati_Clienti_Fornitori xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Record RagSociale="PieroTofy">
  <Indirizzo>Via</Indirizzo> 
  <Citta>Roma</Citta> 
  </Record>
  </Allegati_Clienti_Fornitori>

Sapete darmi indicazione per andare avanti ?
Ultima modifica effettuata da Il Totem 11/09/08 11:03
aaa
11/09/08 11:06
Il Totem
Io di XML so giusto quello che bisogna sapere, ma, guardando il tuo codice, mi sembra che per quello che vuoi ottenere, dovresti costruire le classi in questo modo:
<XmlRootAttribute("Allegati_Clienti_Fornitori")> _
    Public Class DatiElenco
        Public Campi As New List(Of Campo)
    End Class

    Public Class Campo
        <XmlAttribute()> _
        Public RagSociale As String
        <XmlAttribute()> _
        Public Indirizzo As String
        <XmlAttribute()> _
        Public Citta As String
    End Class
aaa
11/09/08 11:47
sergio58
Grazie della pronta risposta, lo provo e ti faccio sapere.Ma per la prima parte , quella dove si fanno le assegnazioni come debbo impostarla?.
Scusa se non ho capito , ma sono proprio alle prime armi con XML.
sergio
aaa
11/09/08 19:41
sergio58
In precedenza ho dimenticato di dire che nel form c'è una listview , i cui valori delle righe dovranno essere registrate nel file XML.
Detto questo ho inserito il codice, ma per la poca conoscenza non sono andato oltre perchè mi da un errore nella costruzione della classe che riporto:
Private Sub CreaFile()
Dim RigaCampi As New Campo
Dim All As New DatiElenco1
RigaCampi.RagSociale = "PieroTofy"
RigaCampi.Indirizzo = "Via"
RigaCampi.Citta = "Roma"
All.Campi = RigaCampi<- errore
Dim writer As New System.Xml.Serialization.XmlSerializer(GetType(DatiElenco1))
Dim file As New System.IO.StreamWriter("c:\ElencoCliFor.xml";)
writer.Serialize(file, All)
file.Close()
End Sub
Praticamente non riesco ad associare la lista alla classe, , quando fsccio All.Campi=RigaCampi
Errore del Tipo Impossibile convertire il valore di tipo..... in .....
Sergio

aaa
12/09/08 8:37
Il Totem
E' evidente che non puoi conertire Campo in List(Of Campo). Se non conosci le liste:
totem.altervista.org/guida/versione2/…
e se non conosci le liste generics:
totem.altervista.org/guida/versione2/…
La sintassi corretta è:
All.Campi.Add(RigaCampi)
aaa
12/09/08 12:18
sergio58
Grazie Totem, è proprio quello che mi serviva.
La prima parte cerco di inserirla manualmente:k:
aaa
12/09/08 12:55
sergio58
:k:
Ultima modifica effettuata da sergio58 12/09/08 13:49
aaa
13/09/08 8:37
Il Totem
Bene, allora posso chiudere se abbiamo finito.
aaa