You should really post the code of the class you're trying to serialize and deserialize. In the meantime, I'll make a guess.
Most likely, the invalid character is in a field or property of type string
. You will need to serialize that as an array of bytes, assuming you can't avoid having that character present at all:
[XmlRoot("root")]
public class HasBase64Content
{
internal HasBase64Content()
{
}
[XmlIgnore]
public string Content { get; set; }
[XmlElement]
public byte[] Base64Content
{
get
{
return System.Text.Encoding.UTF8.GetBytes(Content);
}
set
{
if (value == null)
{
Content = null;
return;
}
Content = System.Text.Encoding.UTF8.GetString(value);
}
}
}
This produces XML like the following:
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Base64Content>AAECAwQFFA==</Base64Content>
</root>
I see you'd probably prefer VB.NET:
<XmlRoot("root")> _
Public Class HasBase64Content
Private _content As String
<XmlIgnore()> _
Public Property Content() As String
Get
Return _content
End Get
Set(ByVal value As String)
_content = value
End Set
End Property
<XmlElement()> _
Public Property Base64Content() As Byte()
Get
Return System.Text.Encoding.UTF8.GetBytes(Content)
End Get
Set(ByVal value As Byte())
If Value Is Nothing Then
Content = Nothing
Return
End If
Content = System.Text.Encoding.UTF8.GetString(Value)
End Set
End Property
End Class