Jag har skapat en klass utifrån ett xml-schema mha xsd.exe och har följdaktligen en klass som vi kan kalla för Produkt med två element, namn och pris.
Två instanser av klassen skapas:
Product p1 = new Product();
Product p2 = new Product();
p1.name = "Brödrost";
p1.price = "5";
p2.name = "Hårtork";
p2.price = "10";
Nu vill jag skapa en xml-fil som innehåller dessa två klasser men här brakar det åt skogen. Skriva ut en av instanserna går finfint genom att:
XmlSerializer serializer = new XmlSerializer(typeof(product));
FileStream fs = new FileStream("test.xml", FileMode.Create, FileAccess.Write);
serializer.Serialize(fs, p1);
Men om jag försöker t.ex.
serializer.Serialize(fs, p1);
serializer.Serialize(fs, p2);
så är problemet förstås att det bara får finnas ett root-element.
Hur är det tänkt att jag skall gå till väga här egentligen? Jag har meckat lite med att försöka skapa en ProductList-array men utan framgång.
Edit:
Har nu fixat till en liten ful-lösning som innebär att jag skickar klassen till en funktion som kör XmlSerialize, vilket returnerar en sträng. Strängen "städar" jag sedan från root-relaterad data.
Ungefär så här:
p.append("<?xml version="1.0".... osv";
p.Append("<root>");
foreach(...här körs funktionen jag beskriver ovan för varje instans av klassen Product och avslutar med p.Append(fixedString))
p.Append("</root>);
...skriver strängen p till filen test.xml
Nu har jag en fin och fungerande xml-fil, men är det känns ful-kodat. Finns det någon snyggare väg till Rom?