mboost-dp1

XML Serialisering


Gå til bund
Gravatar #1 - ghostface
21. aug. 2009 10:24
Hey Alle
Jeg sidder og skal serialisere en datamodel til xml.
pga. nogle design overvejelser er jeg nød til at hav[/code]e nolge IDer repræsenteret i en klasse istedet for refferencen til dem.

public class Container
{
public List<int> FileList= new List<int>();
}


som serialiseret bliver til

<FileList>
<int>1</int>
<int>2</int>
<int>3</int>
<int>4</int>
</FileList>


jeg er ikke interresseret i der står "int" men derimod fx FileID.

Jeg har kigget på http://msdn.microsoft.com/en-us/library/83y7df3e%2... men syntes ikke lige jeg kan finde noget der er brugbart.

Den automatiske serialisering er skide smart normalt :)
Gravatar #2 - Windcape
21. aug. 2009 10:35

namespace FileListSerialization
{
class Program
{
static void Main(string[] args)
{
var s = new XmlSerializer(typeof(FileContainer));

var l = new FileContainer();
l.FileList.AddRange(Enumerable.Range(1, 10));

using(TextWriter writer = new StreamWriter(@"test.xml"))
{
s.Serialize(writer, l);
}
}
}

[XmlRoot]
public class FileContainer
{
private List<int> _fileList = new List<int>();

[XmlArrayItem("FileId")]
public List<int> FileList
{
get { return _fileList; }
set { _fileList = value; }
}
}
}


Output:


<?xml version="1.0" encoding="utf-8"?>
<FileContainer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FileList>
<FileId>1</FileId>
<FileId>2</FileId>
<FileId>3</FileId>
<FileId>4</FileId>
<FileId>5</FileId>
<FileId>6</FileId>
<FileId>7</FileId>
<FileId>8</FileId>
<FileId>9</FileId>
<FileId>10</FileId>
</FileList>
</FileContainer>
Gravatar #4 - ghostface
21. aug. 2009 10:55
Mange tak, jeg søgte lidt videre på din løsning og fandt ud af det.
[XmlArrayItem (ElementName="FileID")]
public List<int> FileList = new List<int>();


blev løsningen. Om den så kan finde ud af det den andne vej bliver spændende :)
Gravatar #5 - Windcape
21. aug. 2009 11:05
a) ElementName er default, du behøver ikke skrive Elementname=?

b) Du bør benytte properties! Det er utrolig grimt at benytte public members!
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login