[LINQ to XML] impossible de charger une list via une requete LINQ
Bonjour, voila je suis entrain d'en apprendre plus sur le LINQ mais voila, j'ai du mal effectuer une requête qui est censée alimenter un list. J'ai avec moi un livre dédié entièrement au LINQ, j'ai beau adapté leur exemple à mon contexte , rien ne marche.
Voici l'implémentation des classes métiers :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class Genre
{
public string Code { get; set; }
public string Libelle { get; set; }
}
class Film
{
public int Numero { get; set; }
public string Titre { get; set; }
public int AnneeProduction { get; set; }
public string Synopsis { get; set; }
public string Photo { get; set; }
public List<Genre> Genres { get; set; }
} |
J'ai ensuite créer une classe technique qui permet de gérer une playlist de film, voici la classe qui charge les éléments du fichiers XML dans un attributs de cette classe, l'erreur vient bien sur de la méthode LoadPlaylist :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
class Playlist
{
public string Intitule { get; set; } //ne fait pas attention à cette attribut
public List<Film> Films { get; set; }
public void LoadPlaylist()
{
XElement xmlFilms = XElement.Load("F:/mesfilms.xml");
var tTemp = (
from oFilm in xmlFilms.Elements("film")
select new Film {
Numero = (Int32)oFilm.Attribute("numero"),
Titre = (String)oFilm.Attribute("titre"),
AnneeProduction = (Int32)oFilm.Attribute("annee"),
Synopsis = (String)oFilm.Attribute("synopsis"),
Photo = (String)oFilm.Attribute("photo"),
Genres = (
from oGenre in oFilm.Descendants("genre")
select new Genre{
Code = (String)oGenre.Attribute("code"),
Libelle = (String)oGenre.Attribute("libelle"),
}
).ToList()
}).ToList();
Films = tTemp;
}
} |
Voila mais quand j'execute le tout il me signale une exception FormatException, or j'ai beau vérifier je ne remarque aucuns problèmes, j'espère que vous aurez une meilleur analyse que moi sur cette erreur car je suis perdu.
Voici le fichier XML :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<?xml version="1.0" encoding="utf-8"?>
<films>
<film numero="1" titre="bilou" annee="jojo" synopsis="kjyfutfjdtjyd" photo="jhlgfsilgdfslig">
<genres>
<genre code="COM" libelle="Comedie" />
<genre code="HOR" libelle="Horreur" />
</genres>
</film>
<film numero="2" titre="bilou" annee="jojo" synopsis="kjyfutfjdtjyd" photo="jhlgfsilgdfslig">
<genres>
<genre code="COM" libelle="Comedie" />
<genre code="HOR" libelle="Horreur" />
</genres>
</film>
<film numero="3" titre="bilou" annee="jojo" synopsis="kjyfutfjdtjyd" photo="jhlgfsilgdfslig">
<genres>
<genre code="COM" libelle="Comedie" />
<genre code="HOR" libelle="Horreur" />
</genres>
</film>
</films> |
Voila si vous avez besoin de renseignement n'hésitez pas.
Cordialement
Toham
EDIT : J'ai essayer un autre moyen mais cette fois c'est une exception NullreferenceException qui est générée voici le nouveau code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
class Playlist
{
public string Intitule { get; set; } //ne fait pas attention à cette attribut
public List<Film> Films { get; set; }
public void LoadPlaylist()
{
XElement xmlFilms = XElement.Load("F:/mesfilms.xml");
var tTemp = (
from oFilm in xmlFilms.Element("films").Descendants("film")
select new Film {
Numero = (Int32)oFilm.Attribute("numero"),
Titre = (String)oFilm.Attribute("titre"),
AnneeProduction = (Int32)oFilm.Attribute("annee"),
Synopsis = (String)oFilm.Attribute("synopsis"),
Photo = (String)oFilm.Attribute("photo"),
Genres = (
from oGenre in oFilm.Element("genres").Descendants("genre")
select new Genre{
Code = (String)oGenre.Attribute("code"),
Libelle = (String)oGenre.Attribute("libelle"),
}
).ToList()
}).ToList();
Films = tTemp;
}
} |