Cześć.
W pliku XML mam kilka "fanów" z taką strukturą jak poniżej. Każdy fan ma inną liczbę znajomych (friend). Jak przypisać danemu fanowi liczbę jego przyjaciół, albo np. wypisać *imię fana: imiona
Xml może mieć tylko jeden root, więc ten Twój jest nieprawidłowy.
var xmlText = `<FANS>
<FAN>
<AGE>15</AGE>
<NAME>Andrzej Kowalski</NAME>
<USERIMAGE>/img/andrzejkowalski.jpg</USERIMAGE>
<GENDER>Mężczyzna</GENDER>
<COUNTRY>Poland</COUNTRY>
<TOTAL_REACTIONS>1</TOTAL_REACTIONS>
<TOTAL_COMMENTS>3</TOTAL_COMMENTS>
<TOTAL_SHARES>2</TOTAL_SHARES>
<USERID>159093717469358</USERID>
<FRIENDS>
<FRIEND>Michał Kowalski</FRIEND>
<FRIEND>Janusz Polak</FRIEND>
<FRIEND>Szymon Niewidomy</FRIEND>
</FRIENDS>
</FAN>
<FAN>
<AGE>18</AGE>
<NAME>Michał Kowalski</NAME>
<USERIMAGE>/img/michalkowalski.jpg</USERIMAGE>
<GENDER>Mężczyzna</GENDER>
<COUNTRY>Poland</COUNTRY>
<TOTAL_REACTIONS>1</TOTAL_REACTIONS>
<TOTAL_COMMENTS>5</TOTAL_COMMENTS>
<TOTAL_SHARES>2</TOTAL_SHARES>
<USERID>159093717469358</USERID>
<FRIENDS>
<FRIEND>Andrzej Kowalski</FRIEND>
</FRIENDS>
</FAN>
</FANS>`;
var dp = new DOMParser();
var xmlDoc = dp.parseFromString(xmlText, "text/xml");
var fans = xmlDoc.getElementsByTagName("FAN");
for (var i = 0; i < fans.length; i++) console.log(fans[i].getElementsByTagName("NAME")[0].textContent)
Tu masz artykuł, z którego czerpałem wiedzę: https://www.w3schools.com/xml/dom_intro.asp
Tak, to wiem. Jednak nie do końca o to mi chodzi. Każdy FAN, ma ileś tam znajomych "FRIEND". Pierwszy fan ma trzech znajomych, drugi ma jednego. I potrzebuje uzyskać informacje np. w takiej postaci:
imięFana1: imięZnajomego1
imięFana1: imięZnajomego2
imięFana1: imięZnajomego3
imięFana2: imięZnajomego1
Czyli byłoby to:
Andrzej Kowalski: Michał Kowalski
Andrzej Kowalski: Janusz Polak
Andrzej Kowalski: Szymon Niewidomy
Michał Kowalski: Andrzej Kowalski
Dokładnie tak samo.
for (var i = 0; i < fans.length; i++) {
var currentFanName = fans[i].getElementsByTagName("NAME")[0].textContent;
var friends = fans[i].getElementsByTagName("FRIENDS")[0].getElementsByTagName("FRIEND");
for (var j = 0; j < friends.length; j++) {
var currentFriendName = friends[j].textContent;
console.log(currentFanName + " " + currentFriendName);
}
}
Musisz jeszcze uwzględnić to, że fan może być odludkiem i nie mieć żadnych kumpli, oraz podzielić mój kod na funkcje, żeby się lepiej czytał - ja nie mam na to czasu,