I'm making my first class and then serializing it. I've never worked with serialization and I'm having some problems. Here is the class code:
<XmlRoot([Namespace]:="FatturaElettronica")>
Public Class FatturaElettronica
Public quantity As Integer
Sub New()
FatturaElettronicaHeader = New FatturaElettronicaHeader
End Sub
Property FatturaElettronicaHeader As FatturaElettronicaHeader
End Class
Public Class FatturaElettronicaHeader
Sub New()
DatiTrasmissione = New DatiTrasmissione
End Sub
Property DatiTrasmissione As DatiTrasmissione
End Class
Public Class DatiTrasmissione
Sub New()
Idtrasmittente = New idTrasmittente
ContattiTrasmittente = New ContattiTrasmittente
End Sub
Property Idtrasmittente As idTrasmittente
Property ProgressivoInvio As String
Property FormatoTrasmissione As FormatoTrasmissioneType
Property CodiceDestinatario As String
Property ContattiTrasmittente As ContattiTrasmittente
Property PecDestinatario As String
End Class
Public Class idTrasmittente
Property IdPaese As String
Property IdCodice As String
End Class
Public Class ContattiTrasmittente
Property Telefono As String
Property Email As String
End Class
Public Enum FormatoTrasmissioneType
FPA12
FPR12
End Enum
Here is a bit of code that I use for testing:
Dim fattEle As New FatturaElettronica
Dim ns2 As New Xml.Serialization.XmlSerializerNamespaces()
ns2.Add("p", "FatturaElettronica")
Dim ser As Xml.Serialization.XmlSerializer = New Xml.Serialization.XmlSerializer(fattEle.GetType)
Dim stream As New IO.FileStream("c:/lavoro/example2.xml", IO.FileMode.Create)
ser.Serialize(stream, fattEle, ns2)
stream.Close()
And this is my output XML:
<?xml version="1.0"?>
<p:FatturaElettronica xmlns:p="FatturaElettronica">
<p:FatturaElettronicaHeader>
<p:DatiTrasmissione>
<p:Idtrasmittente />
<p:FormatoTrasmissione>FPA12</p:FormatoTrasmissione>
<p:ContattiTrasmittente />
</p:DatiTrasmissione>
</p:FatturaElettronicaHeader>
</p:FatturaElettronica>
First, I would like to add the p:
only before FatturaElettronica
, the root.
Second, the FormatoTrasmissione
property is an Enum
, but in my code isn't being set to anything. So, why is the serialization assuming the value FPA12
without that value being assigned?
Last but, not least... I would like to not serialize the properties that are not filled. The ContattiTrasmittente
property is empty, but serialized. Why?