Précédent   Forum des professionnels en informatique > Dotnet > Accès aux données > Linq
Linq Forum d'entraide sur la manipulation de données avec Linq
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 15h24   #1
Invité de passage
 
Homme Manu
Junior
Inscription : février 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Manu
Localisation : Belgique

Informations professionnelles :
Activité : Junior
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2012
Messages : 2
Points : 0
Points : 0
Par défaut requête Linq to XML

Bonjour,
J'aimerai sélectionner les balises enfants de la balise qui a comme attribut: identifier="MainMenu". Donc les sous-menu Chien, Chat et Oiseau

Code xml :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<menuitem identifier="MainMenu" img="" type="section">
 
	<menuitem identifier="Chien" img="Chien.png" type="section">
		<menuitem identifier="Labrador" img="Labrador.png" type="action"/>
		<menuitem identifier="Husky" img="Husky.png" type="action"/>
	</menuitem>
 
	<menuitem identifier="Chat" img="Extras.png" type="section">
		<menuitem identifier="Chartreux" img="Chartreux.png" type="section">
			<menuitem identifier="..." img="....png" type="action"/>
		</menuitem>
	</menuitem>
 
	<menuitem identifier="Oiseau" img="Randoguide.png" type="section">
		<menuitem identifier="Canari" img="Canari.png" type="action"/>
		<menuitem identifier="Perruche" img="Perruche.png" type="action"/>
	</menuitem>
</menuitem>

J'en suis là:

Code :
1
2
3
4
5
6
7
8
9
10
 
            XDocument menuData = XDocument.Load(@"Data\menu.xml");
            var data = from p in menuData.Descendants("menuitem")
                       where p.Attribute("identifier").Value == "MainMenu"
                       select new GeolivesMenuItem()
                               {
                                   Identifier = p.Attribute("identifier").Value,
                                   Img = string.Format(@"Images\Menu\{0}", p.Attribute("img").Value),
                                   Type = p.Attribute("type").Value,
                               };
Il faudrait que j'arrive à descendre un cran plus bas...
Auriez-vous des suggestions svp?
Ouftiii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 09h18   #2
Membre émérite
 
Homme John Doe
Développeur .NET
Inscription : novembre 2010
Messages : 549
Détails du profil
Informations personnelles :
Nom : Homme John Doe
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : novembre 2010
Messages : 549
Points : 824
Points : 824
si tu veu les type sections par exemple tu fais comme ça et ainsi de suite:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
var data = from p in menuData.Descendants("menuitem")
                       where p.Attribute("identifier").Value == "MainMenu"
                      from e in p.Descendants("menuitem")
                        where e.Attribute("type").Value == "section"
                       select new GeolivesMenuItem()
 
                       {
                           Identifier = e.Attribute("identifier").Value,
                           Img = string.Format(@"Images\Menu\{0}", e.Attribute("img").Value),
                           Type = e.Attribute("type").Value,
                       };
youtpout978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 15h32   #3
Invité de passage
 
Homme Manu
Junior
Inscription : février 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Manu
Localisation : Belgique

Informations professionnelles :
Activité : Junior
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2012
Messages : 2
Points : 0
Points : 0
Citation:
Envoyé par youtpout978 Voir le message
si tu veu les type sections par exemple tu fais comme ça et ainsi de suite:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
var data = from p in menuData.Descendants("menuitem")
                       where p.Attribute("identifier").Value == "MainMenu"
                      from e in p.Descendants("menuitem")
                        where e.Attribute("type").Value == "section"
                       select new GeolivesMenuItem()
 
                       {
                           Identifier = e.Attribute("identifier").Value,
                           Img = string.Format(@"Images\Menu\{0}", e.Attribute("img").Value),
                           Type = e.Attribute("type").Value,
                       };
Merci,
Mais l’attribut Type me sert a savoir si je dois continuer à avancer dans mon menu ou si je dois appeler une fonction du programme.

J'ai trouvé une solution en mettant à jour la propriété GeoMenuRoot:

Code :
1
2
3
4
5
6
7
8
9
10
 
            var MenuList = from p in MenuXmlDoc.Descendants("menuitem").Elements("menuitem")
                           where p.Parent.Attribute("identifier").Value == GeoMenuRoot
                           select new GeolivesMenuItem()
                           {
                               Identifier = string.Format("MenuItemName{0}", p.Attribute("identifier").Value),
                               Description = string.Format("MenuItemDescription{0}", p.Attribute("identifier").Value),
                               Img = string.Format(@"Images\Menu\{0}", p.Attribute("img").Value),
                               Type = p.Attribute("type").Value,
                           };
encore merci quand même
Ouftiii est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h09.


 
 
 
 
Partenaires

Hébergement Web