15. marts 2009 - 18:57Der er
4 kommentarer og 1 løsning
Tilføj elementer til XML fil med LINQ (i C#)
Hej Eksperter
Jeg er ved at lave en metode til at tilføje elementer til en XML fil vha. LINQ to XML. Min XML fil ser ud som følgende: <dvdlibrary> <dvd> <title>Blå Mænd</title> <language>Danish</language> <genre>Comedy</genre> <year>2009</year> <playingTime>85</playingTime> <director>Rasmus Heide</director> <plot>Sjov på en losseplads</plot> <actors> <actor> <firstname>Martin</firstname> <lastname>Brygman</lastname> <role>En mand</role> </actor> <actor> <firstname>Mick</firstname> <lastname>Øgendahl</lastname> <role>En sjov mand</role> </actor> <actor> <firstname>Thure</firstname> <lastname>Lindhardt</lastname> <role>En lyshåret mand</role> </actor> </actors> </dvd> </dvdlibrary>
Mit problem er at tilføje flere "actor"s til XML'en. Indtil videre ser min metode således ud:
public void addToXml(String title, String language, String genre, int year, int playingTime, String director, String plot, List<Actor> actors) { dvdxml.Element("dvdlibrary").Add( new XElement("dvd", new XElement("title", title), new XElement("language", language), new XElement("genre", genre), new XElement("year", year), new XElement("playingTime", playingTime), new XElement("director", director), new XElement("plot", plot), new XElement("actors", "HER ER MIT PROBLEM")));
dvdxml.Save(XMLExample.xml"); }
Hvordan kan jeg iterere igennem listen af actors og tilføje dem rigtigt? Jeg tænker noget i stil med: foreach(Actor a in actors) { new XElement("actor", new XElement("firstname", actors.ElementAt(0).firstname), new XElement("lastname", actors.ElementAt(0).lastname), new XElement("role", actors.ElementAt(0).role))); }
Men det kan jeg ikke tilføje inde i new XElement("actors", bla bla).
public void addToXml(String title, String language, String genre, int year, int playingTime, String director, String plot, List<Actor> actors) { XElement nydvd = new XElement("dvd", new XElement("title", title), new XElement("language", language), new XElement("genre", genre), new XElement("year", year), new XElement("playingTime", playingTime), new XElement("director", director), new XElement("plot", plot)); foreach(Actor a in actors) { nydvd.Add(new XElement("actor", new XElement("firstname", actors.ElementAt(0).firstname), new XElement("lastname", actors.ElementAt(0).lastname), new XElement("role", actors.ElementAt(0).role))); } dvdxml.Element("dvdlibrary").Add(nydvd); dvdxml.Save("XMLExample.xml"); }
Nice.., det virkede. Har bare en lille rettelse da "actor" elementerne skal være inde i "actors". Så koden bliver som følger: XElement nydvd = new XElement("dvd", new XElement("title", title), new XElement("language", language), new XElement("genre", genre), new XElement("year", year), new XElement("playingTime", playingTime), new XElement("director", director), new XElement("plot", plot), new XElement("actors", "")); foreach (Actor a in actors) { nydvd.Element("actors").Add(new XElement("actor", new XElement("firstname", actors.ElementAt(0).firstname), new XElement("lastname", actors.ElementAt(0).lastname), new XElement("role", actors.ElementAt(0).role))); }
Tusind tak for din hjælp arne_v. Smid et svar og du får dine vejfortjente point:)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.