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).
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
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.