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 :
Mon programme me renvoit ça :Name1 -> Name2 -> Name3 -> Name4
Name2 -> Name3 -> Name4
Name3 -> Name4
Le problème c'est que Name4 n'apparait pas car il n'a pas d'issuekey.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 :
Voici mon code :
J'espère que vous pourrez m'aider !
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; } }
Partager