Serializzazione XML in scrittura

di il
10 risposte

Serializzazione XML in scrittura

Buongiorno a tutti
Ho letto l'articolo dell'8/5/2019 a firma di Emanuele Mattei, inerente la lettura delle fatture elettroniche.
L'articolo è interessante, l'esempio perfettamente funzionante, ma, purtroppo, non riesco a trasformarlo per la scrittura del file XML.
Cercavo infatti di elaborare una piccola procedura per la produzione del file XML per le liquidazioni periodiche IVA. Ho ricavato la classe dall'apposita funzione di VS (Incolla speciale/incolla XML come classe), ma, nonostante durante la stesura del codice l'editor di VS riconosca le varie classi parziali e proprietà, in esecuzione mi dà l'errore " 'Riferimento a un oggetto non impostato su un'istanza di oggetto.'
Qualcuno riesce ad aiutarmi a capire dove sbaglio?

Sub:
Private Sub GeneraXML()
Dim IVP18 As LIPE.Fornitura = New LIPE.Fornitura()

IVP18.Comunicazione.identificativo = 1

With IVP18.Comunicazione
.Frontespizio.CodiceFiscale = TxtCodFisc_Contrib.Text
.Frontespizio.AnnoImposta = TxtAnno.Text
.Frontespizio.PartitaIVA = TxtPartIVA_Contrib.Text
.Frontespizio.CFDichiarante = TxtCodFisc_Dich.Text
.Frontespizio.CodiceCaricaDichiarante = TxtCodCarica.Text
.Frontespizio.FirmaDichiarazione = 1
.Frontespizio.CFIntermediario = TxtCFIntermediario.Text
.Frontespizio.ImpegnoPresentazione = Impegno
.Frontespizio.DataImpegno = Replace(TxtDataImpegno.Text, "/", "")
.Frontespizio.FirmaIntermediario = 1
.Frontespizio.IdentificativoProdSoftware = 2327910580
End With

With IVP18.Comunicazione.DatiContabili.Modulo
.NumeroModulo = 1
If Val(TxtMese.Text) > 0 Then
.Mese = TxtMese.Text
End If
If Val(TxtTrim.Text) > 0 Then
.Trimestre = TxtTrim.Text
End If
.TotaleOperazioniAttive = TxtOpeAttive.Text
.TotaleOperazioniPassive = TxtOpePassive.Text
.IvaEsigibile = TxtIvaEsigib.Text
.IvaDetratta = TxtIvaDetratta.Text
If rdCDec(TxtIvaEsigib.Text) - rdCDec(TxtIvaDetratta.Text) > 0 Then
.IvaDovuta = rdCDec(TxtIvaEsigib.Text) - rdCDec(TxtIvaDetratta.Text)
Else
.IvaCredito = rdCDec(TxtIvaDetratta.Text) - rdCDec(TxtIvaEsigib.Text)
End If
If rdCDec(TxtCredAnnoPre.Text) > 0 Then
.CreditoAnnoPrecedente = TxtCredAnnoPre.Text
End If
If rdCDec(TxtCredPrec.Text) > 0 Then
.CreditoPeriodoPrecedente = TxtCredPrec.Text
End If
If rdCDec(TxtInteressi.Text) > 0 Then
.InteressiDovuti = TxtInteressi.Text
End If
If rdCDec(TxtAcconto.Text) > 0 Then
.Acconto = TxtAcconto.Text
.Metodo = TxtMetodo.Text
End If
If rdCDec(TxtVersamento.Text) > 0 Then
.ImportoDaVersare = TxtVersamento.Text
End If
If rdCDec(TxtCredito.Text) > 0 Then
.ImportoACredito = TxtCredito.Text
End If
End With
Dim file As New System.IO.StreamWriter(TxtFileXML.Text)
Dim writer As New System.Xml.Serialization.XmlSerializer(GetType(LIPE))
writer.Serialize(file, IVP18)
file.Close()
End Sub





Classe:
Imports System.Xml.Serialization
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Public Class LIPE

' NOTA: con il codice generato potrebbe essere richiesto almeno .NET Framework 4.5 o .NET Core/Standard 2.0.
'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp"),
System.Xml.Serialization.XmlRootAttribute([Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp", IsNullable:=False)>
Partial Public Class Fornitura

Private intestazioneField As FornituraIntestazione

Private comunicazioneField As FornituraComunicazione

'''<remarks/>
Public Property Intestazione() As FornituraIntestazione
Get
Return Me.intestazioneField
End Get
Set
Me.intestazioneField = Value
End Set
End Property

'''<remarks/>
Public Property Comunicazione() As FornituraComunicazione
Get
Return Me.comunicazioneField
End Get
Set
Me.comunicazioneField = Value
End Set
End Property
End Class

'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraIntestazione

Private codiceFornituraField As String

Private codiceFiscaleDichiaranteField As String

Private codiceCaricaField As Byte

'''<remarks/>
Public Property CodiceFornitura() As String
Get
Return Me.codiceFornituraField
End Get
Set
Me.codiceFornituraField = Value
End Set
End Property

'''<remarks/>
Public Property CodiceFiscaleDichiarante() As String
Get
Return Me.codiceFiscaleDichiaranteField
End Get
Set
Me.codiceFiscaleDichiaranteField = Value
End Set
End Property

'''<remarks/>
Public Property CodiceCarica() As Byte
Get
Return Me.codiceCaricaField
End Get
Set
Me.codiceCaricaField = Value
End Set
End Property
End Class

'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraComunicazione

Private frontespizioField As FornituraComunicazioneFrontespizio

Private datiContabiliField As FornituraComunicazioneDatiContabili

Private identificativoField As Byte

'''<remarks/>
Public Property Frontespizio() As FornituraComunicazioneFrontespizio
Get
Return Me.frontespizioField
End Get
Set
Me.frontespizioField = Value
End Set
End Property

'''<remarks/>
Public Property DatiContabili() As FornituraComunicazioneDatiContabili
Get
Return Me.datiContabiliField
End Get
Set
Me.datiContabiliField = Value
End Set
End Property

'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()>
Public Property identificativo() As Byte
Get
Return Me.identificativoField
End Get
Set
Me.identificativoField = Value
End Set
End Property
End Class

'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraComunicazioneFrontespizio

Private codiceFiscaleField As ULong

Private annoImpostaField As UShort

Private partitaIVAField As ULong

Private cFDichiaranteField As String

Private codiceCaricaDichiaranteField As Byte

Private firmaDichiarazioneField As Byte

Private cFIntermediarioField As String

Private impegnoPresentazioneField As Byte

Private dataImpegnoField As UInteger

Private firmaIntermediarioField As Byte

Private identificativoProdSoftwareField As UInteger

'''<remarks/>
Public Property CodiceFiscale() As ULong
Get
Return Me.codiceFiscaleField
End Get
Set
Me.codiceFiscaleField = Value
End Set
End Property

'''<remarks/>
Public Property AnnoImposta() As UShort
Get
Return Me.annoImpostaField
End Get
Set
Me.annoImpostaField = Value
End Set
End Property

'''<remarks/>
Public Property PartitaIVA() As ULong
Get
Return Me.partitaIVAField
End Get
Set
Me.partitaIVAField = Value
End Set
End Property

'''<remarks/>
Public Property CFDichiarante() As String
Get
Return Me.cFDichiaranteField
End Get
Set
Me.cFDichiaranteField = Value
End Set
End Property

'''<remarks/>
Public Property CodiceCaricaDichiarante() As Byte
Get
Return Me.codiceCaricaDichiaranteField
End Get
Set
Me.codiceCaricaDichiaranteField = Value
End Set
End Property

'''<remarks/>
Public Property FirmaDichiarazione() As Byte
Get
Return Me.firmaDichiarazioneField
End Get
Set
Me.firmaDichiarazioneField = Value
End Set
End Property

'''<remarks/>
Public Property CFIntermediario() As String
Get
Return Me.cFIntermediarioField
End Get
Set
Me.cFIntermediarioField = Value
End Set
End Property

'''<remarks/>
Public Property ImpegnoPresentazione() As Byte
Get
Return Me.impegnoPresentazioneField
End Get
Set
Me.impegnoPresentazioneField = Value
End Set
End Property

'''<remarks/>
Public Property DataImpegno() As UInteger
Get
Return Me.dataImpegnoField
End Get
Set
Me.dataImpegnoField = Value
End Set
End Property

'''<remarks/>
Public Property FirmaIntermediario() As Byte
Get
Return Me.firmaIntermediarioField
End Get
Set
Me.firmaIntermediarioField = Value
End Set
End Property

'''<remarks/>
Public Property IdentificativoProdSoftware() As UInteger
Get
Return Me.identificativoProdSoftwareField
End Get
Set
Me.identificativoProdSoftwareField = Value
End Set
End Property
End Class

'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraComunicazioneDatiContabili

Private moduloField As FornituraComunicazioneDatiContabiliModulo

'''<remarks/>
Public Property Modulo() As FornituraComunicazioneDatiContabiliModulo
Get
Return Me.moduloField
End Get
Set
Me.moduloField = Value
End Set
End Property
End Class

'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraComunicazioneDatiContabiliModulo

Private numeroModuloField As Byte

Private trimestreField As Byte

Private meseField As Byte

Private totaleOperazioniAttiveField As String

Private totaleOperazioniPassiveField As String

Private ivaEsigibileField As String

Private ivaDetrattaField As String

Private ivaDovutaField As String

Private ivaCreditoField As String

Private creditoAnnoPrecedenteField As String

Private creditoPeriodoPrecedenteField As String

Private creditiImpostaField As String

Private interessiDovutiField As String

Private VersamentiAutoUEField As String

Private MetodoField As String

Private AccontoField As String

Private importoDaVersareField As String

Private importoACreditoField As String

'''<remarks/>
Public Property NumeroModulo() As Byte
Get
Return Me.numeroModuloField
End Get
Set
Me.numeroModuloField = Value
End Set
End Property

'''<remarks/>
Public Property Trimestre() As Byte
Get
Return Me.trimestreField
End Get
Set
Me.trimestreField = Value
End Set
End Property
Public Property Mese() As Byte
Get
Return Me.meseField
End Get
Set
Me.meseField = Value
End Set
End Property

'''<remarks/>
Public Property TotaleOperazioniAttive() As String
Get
Return Me.totaleOperazioniAttiveField
End Get
Set
Me.totaleOperazioniAttiveField = Value
End Set
End Property

'''<remarks/>
Public Property TotaleOperazioniPassive() As String
Get
Return Me.totaleOperazioniPassiveField
End Get
Set
Me.totaleOperazioniPassiveField = Value
End Set
End Property

'''<remarks/>
Public Property IvaEsigibile() As String
Get
Return Me.ivaEsigibileField
End Get
Set
Me.ivaEsigibileField = Value
End Set
End Property

'''<remarks/>
Public Property IvaDetratta() As String
Get
Return Me.ivaDetrattaField
End Get
Set
Me.ivaDetrattaField = Value
End Set
End Property

'''<remarks/>
Public Property IvaDovuta() As String
Get
Return Me.ivaDovutaField
End Get
Set
Me.ivaDovutaField = Value
End Set
End Property
Public Property IvaCredito() As String
Get
Return Me.ivaCreditoField
End Get
Set
Me.ivaCreditoField = Value
End Set
End Property

'''<remarks/>
Public Property CreditoAnnoPrecedente() As String
Get
Return Me.creditoAnnoPrecedenteField
End Get
Set
Me.creditoAnnoPrecedenteField = Value
End Set
End Property
Public Property CreditoPeriodoPrecedente() As String
Get
Return Me.creditoPeriodoPrecedenteField
End Get
Set
Me.creditoPeriodoPrecedenteField = Value
End Set
End Property
Public Property CreditiImposta() As String
Get
Return Me.creditiImpostaField
End Get
Set
Me.creditiImpostaField = Value
End Set
End Property

'''<remarks/>
Public Property InteressiDovuti() As String
Get
Return Me.interessiDovutiField
End Get
Set
Me.interessiDovutiField = Value
End Set
End Property

Public Property versamentiAutoUE() As String
Get
Return Me.versamentiAutoUEField
End Get
Set
Me.versamentiAutoUEField = Value
End Set
End Property

Public Property Metodo() As String
Get
Return Me.MetodoField
End Get
Set
Me.MetodoField = Value
End Set
End Property

Public Property Acconto() As String
Get
Return Me.AccontoField
End Get
Set
Me.AccontoField = Value
End Set
End Property

'''<remarks/>
Public Property ImportoDaVersare() As String
Get
Return Me.importoDaVersareField
End Get
Set
Me.importoDaVersareField = Value
End Set
End Property
Public Property ImportoACredito() As String
Get
Return Me.importoACreditoField
End Get
Set
Me.importoACreditoField = Value
End Set
End Property
End Class
End Class

10 Risposte

  • Re: Serializzazione XML in scrittura

    Se l'errore non ti dà la riga dell'errore stesso esegui in debug e passo passo arriva alla riga dove si verifica l'errore
  • Re: Serializzazione XML in scrittura

    Scusa, avevo dimenticato di precisare. 'errore è su tutte le assegnazioni, già sulla prima
    IVP18.Comunicazione.identificativo = 1
    Non riesco a spoeigarmelo, perchè normalmente questo tipo di errore viene già segnalato dall'editor, mentre invece qui si verifica solo in fase di esecuzione.
  • Re: Serializzazione XML in scrittura

    Innanzitutto ricordati che quando posti del codice devi inserirlo tra i tag corretti

    Una volta eseguita la riga
    Dim IVP18 As LIPE.Fornitura = New LIPE.Fornitura()
    dai un occhio alla variabile IVP18, è correttamente istanziata ??
  • Re: Serializzazione XML in scrittura

    Provato. Non è questo l'errore (Sob!)
  • Re: Serializzazione XML in scrittura

    Nell'editor di Visual Studio se digiti un punto dopo "IVP18.Comunicazione" vedi l'elenco delle proprietà?
  • Re: Serializzazione XML in scrittura

    Certo. Intendo proprio questo quando affermo che l'editor riconosce sia le classi che le proprietà. L'errore si verifica solo in esecuzione.
  • Re: Serializzazione XML in scrittura

    Prova a vedere quanto vale IVP18.Comunicazione
  • Re: Serializzazione XML in scrittura

    L'errore è lo stesso anche in lettura
  • Re: Serializzazione XML in scrittura

    Dopo la riga
    Dim IVP18 As LIPE.Fornitura = New LIPE.Fornitura()
    prova ad aggiungere queste righe e poi manda in esecuzione
    
    If IVP18 Is Nothing Then
       MessageBox.Show("Oggetto IPV18 non istanziato correttamente")
       Exit Sub
    End If
    If IVP18.Comunicazione Is Nothing Then
       MessageBox.Show("Oggetto IPV18.Comunicazione non istanziato correttamente")
       Exit Sub
    End If
    If IVP18.Comunicazione.identificativo Is Nothing Then
       MessageBox.Show("Oggetto IPV18.Comunicazione.identificativo non istanziato correttamente")
       Exit Sub
    End If
    
  • Re: Serializzazione XML in scrittura

    E' come dici, va in errore.
    Il problema si supera solo utilizzando le partial class 'FornituraComunicazione', FornituraDatiContabili' ecc., ma in questo modo risulta poi impossibile la serializzazione, dovendo utilizzare diversi writers
Devi accedere o registrarti per scrivere nel forum
10 risposte