Bonjour,
je voudrais rechercher récursivement des liens entre mes items. Ces liens sont définis par la balise <issuekey>. Mon algorithme fonctionne mais supprimer la dernière valeur si elle n'a pas de lien. Je cherche le problème depuis plus de 5 heures mais je ne trouve pas...
Voici 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<rss>
    <channel>
        <item>
            <key id="0">Name1</key>
            <issuelinks>
                <issuelinktype id="0">
                    <name>Bundle</name>
                    <outwardlinks description="descr">
                        <issuelink>
                            <issuekey id="0">Name2</issuekey>
                        </issuelink>
                    </outwardlinks>
                </issuelinktype>
            </issuelinks>
        </item>
 
 
        <item>
            <key id="0">Name2</key>
            <issuelinks>
                <issuelinktype id="0">
                    <name>Bundle</name>
                    <outwardlinks description="descr">
                        <issuelink>
                            <issuekey id="0">Name3</issuekey>
                        </issuelink>
                    </outwardlinks>
                </issuelinktype>
            </issuelinks>
        </item>
 
        <item>
            <key id="0">Name3</key>
            <issuelinks>
                <issuelinktype id="0">
                    <name>Bundle</name>
                    <outwardlinks description="descr">
                        <issuelink>
                            <issuekey id="0">Name4</issuekey>
                        </issuelink>
                    </outwardlinks>
                </issuelinktype>
            </issuelinks>
        </item>
    </channel>
</rss>


Pour cet example, les liens entre les items donne cela :
Name1 -> Name2 -> Name3 -> Name4
Name2 -> Name3 -> Name4
Name3 -> Name4
Mon programme me renvoit ça :
Name1 has a link with : Name2
Name2 has a link with : Name3
Name3 has a link with :
Name2 has a link with :Name3
Name3 has a link with :
Name3 has a link with :
Le problème c'est que Name4 n'apparait pas car il n'a pas d'issuekey.
Voici mon code :

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function getDependance(tabItem,item) {
            if (hasIssueLink(item)) { 
    // If item has an issuelink(an attribute essantial)
                var issueKeys = item.issuelinks.issuelinktype.outwardlinks.issuelink; 
    // IssueKeys list of the item passed in parameters
                for(var issueKeyId in issueKeys) {
    // For each issueKey, in the list of issueKeys
                    var issueKey = issueKeys[issueKeyId];
     // issueKey of the current item
                    var itemName = getIssueKeyContent(issueKey); 
    // Name of the linked item found
                    console.log(getKeyContent(item) + " has a link with : " );
                    getDependance(tabItem,searchItemByName(tabItem,itemName));
                }
            }
        }
        function searchItemByName(tabItem, name){
            for (var item in tabItem){
                if (getKeyContent(tabItem[item]) == name){
                    console.log(getKeyContent(tabItem[item]));
                    return tabItem[item];
                }
            }
        }
 
function hasIssueLink(item){
    if (item && item.issuelinks && item.issuelinks.issuelinktype && item.issuelinks.issuelinktype.outwardlinks && item.issuelinks.issuelinktype.outwardlinks.issuelink) {
        return true;
    } else {
        return false;
    }
}
J'espère que vous pourrez m'aider !