System.InvalidOperationException: The type of the argument object 'SI_Foodware.Model.LocalisationCollection' is not primitive. System.InvalidOperationException: There was an error generating the XML document.
LocalisationCollection.cs
using System.Xml.Serialization;
namespace SI_Foodware.Model
{
[XmlRoot("LocalisationCollection")]
public class LocalisationCollection
{
[XmlArray("LocalisationItems")]
[XmlArrayItem("LocalisationItem", typeof(LocalisationItem))]
public LocalisationItem[] LocalisationItem { get; set; }
}
}
LocalisationItem.cs
using System.Xml.Serialization;
using SQLite.Net.Attributes;
namespace SI_Foodware.Model
{
public class LocalisationItem
{
[PrimaryKey, AutoIncrement]
[XmlIgnore]
public int Id { get; set; }
[XmlElement("Page")]
public string Page { get; set; }
[XmlElement("Field")]
public string Field { get; set; }
[XmlElement("Language")]
public string Language { get; set; }
[XmlElement("Value")]
public string Value { get; set; }
[XmlElement("Width")]
public string Width { get; set; }
[XmlElement("Columns")]
public string Columns { get; set; }
[XmlElement("Table")]
public string Table { get; set; }
[XmlElement("Title")]
public string Title { get; set; }
[XmlElement("Parent")]
public string Parent { get; set; }
[XmlElement("IconSource")]
public string IconSource { get; set; }
[XmlElement("TargetType")]
public string TargetType { get; set; }
}
}
Function to Serialize
public bool Serialize(string filename)
{
var path = GetPath(filename);
var serializer = new XmlSerializer(typeof(List<LocalisationCollection>));
var writer = new FileStream(path, FileMode.Create);
var localisationItems = db.GetAllItems<LocalisationItem>();
var collection = new LocalisationCollection();
collection.LocalisationItem = localisationItems.ToArray();
try
{
serializer.Serialize(writer, collection);
writer.Close();
return true;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
I want somethink like this
<?xml version="1.0" encoding="utf-8"?>
<LocalisationCollection>
<LocalisationItems>
<LocalisationItem>
<Language>Nederlands</Language>
</LocalisationItem>
<LocalisationItem>
<Language>Engels</Language>
</LocalisationItem>
<LocalisationItem>
<Page>LoginPage</Page>
<Field>grd_grid</Field>
<Columns>2</Columns>
</LocalisationItem>
<LocalisationItem>
<Page>LoginPage</Page>
<Field>grd_grid</Field>
<Width>120</Width>
</LocalisationItem>
<LocalisationItem>
<Page>LoginPage</Page>
<Field>grd_grid</Field>
<Width>180</Width>
</LocalisationItem>
</LocalisationItems>
</LocalisationCollection>