Serialization
Hejsa,jeg har en udfordring med at serialization.
I mine objekter er der et xml element som hedder det samme (Note) men med forskellig typer - i et object er det af typen Note og i et andet er det af type string.
Når jeg prøver at serialisere objektet opstår følgende fejl:
Det øverste XML-element 'Note' fra navneområdet 'cbc' refererer til to forskellige typer, Test.Note og System.String. Brug XML-attributter til at angive et andet XML-navn eller -navneområde til elementet eller typerne.
Hvordan løser jeg det så de stadig har de samme namespaces som angivet i koden?
Her er test koden:
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace Test
{
class Program
{
static void Main()
{
var invoice = new Invoice();
var namespaces = new XmlSerializerNamespaces();
namespaces.Add(NameSpaces.Cac, NameSpaces.Cac);
namespaces.Add(NameSpaces.Cbc, NameSpaces.Cbc);
namespaces.Add(NameSpaces.Ext, NameSpaces.Ext);
var serializer = new XmlSerializer(typeof(Invoice));
TextWriter textWriter = new StreamWriter("C:\\test.xml");
serializer.Serialize(textWriter, invoice, namespaces);
textWriter.Close();
}
}
[XmlRootAttribute("Invoice", IsNullable = false)]
public class Invoice
{
[XmlElement("Note", Namespace = NameSpaces.Cbc)]
public List<Note> Note { get; set; }
[XmlElement("InvoiceLine", Namespace = NameSpaces.Cac)]
public List<InvoiceLine> InvoiceLine { get; set; }
public Invoice() {}
}
public class InvoiceLine
{
[XmlElement("Note", Namespace = NameSpaces.Cbc)]
public string Note { get; set; }
public InvoiceLine() {}
}
public class Note
{
[XmlText]
public string Value { get; set; }
public Note() {}
public Note(string note)
{
Value = note;
}
}
public struct NameSpaces
{
public const string Cac = "cac";
public const string Cbc = "cbc";
public const string Ext = "ext";
}
}