JS & XML problem

0

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

0

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

0

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

2

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,

1 użytkowników online, w tym zalogowanych: 0, gości: 1