Bonjour à vous tous les Développeurs !


J'essayes tant bien que mal d'accéder à un sous ensemble d'un sous ensemble d’élément eux même dans un ensemble d'élément.

Pour illustrer voici un extrait de mon XML :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
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
<?xml version="1.0" encoding="ISO-8859-1"?>
<Applications>
    <Application nom="powerpnt.exe">
        <Maccros type="ouvrir">
            <Macro touche="VK_F5"/>
        </Maccros>
        <Maccros type="fermer">
            <Macro touche="VK_ESCAPE"/>
        </Maccros>
    </Application>
    <Application nom="acrord32.exe">
        <Maccros type="ouvrir">
            <Macro touche="VK_CONTROL"/>
            <Macro touche="l"/>
        </Maccros>
        <Maccros type="fermer">
            <Macro touche="VK_ESCAPE"/>
        </Maccros>
    </Application>
    <Application nom="chrome.exe">
        <Maccros type="ouvrir">
            <Macro touche="VK_CONTROL"/>
            <Macro touche="t"/>
        </Maccros>
        <Maccros type="fermer">
            <Macro touche="VK_CONTROL"/>
            <Macro touche="VK_F4"/>
        </Maccros>
    </Application>
</listeApplications>

Voici le code que j'applique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TiXmlHandle hdl(&doc);
TiXmlElement *elem = hdl.FirstChildElement().FirstChildElement("Application").Element();   
if(!elem)
    return "The node is missing";
 
while (elem)
{
    cout << elem->Value() << " = " << elem->Attribute("nom");
 
    TiXmlElement *sousElem = elem->FirstChildElement();
    while(sousElem)
    {
        cout << "\t" << sousElem->Value() + " = " + sousElem->Attribute("type"));
        sousElem = sousElem->NextSiblingElement();
    }
    elem = elem->NextSiblingElement(); // iteration
}
Le problème est qu'à chaque itérations le parcours reprends depuis le début. Voici ce que j'obtiens en sortie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Nom : Application = powerpnt.exe
    Maccros = ouvrir
    Maccros = fermer
Nom : Application = acrord32.exe
    Maccros = ouvrir
    Maccros = fermer
    Maccros = ouvrir
    Maccros = fermer
Nom : Application = chrome.exe
    Maccros = ouvrir
    Maccros = fermer
    Maccros = ouvrir
    Maccros = fermer
    Maccros = ouvrir
    Maccros = fermer
Ce que je souaiterais obtenir est tout simplement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Nom : Application = powerpnt.exe
    Maccros = ouvrir
    Maccros = fermer
Nom : Application = acrord32.exe
    Maccros = ouvrir
    Maccros = fermer
Nom : Application = chrome.exe
    Maccros = ouvrir
    Maccros = fermer
Merci d'avance pour votre aide !

Vincent