У меня есть XML, который я пытаюсь перекрыть и создать объект javascript. Каждый <roleName>
будет именем объекта и содержит данные массив всех <users>
внутри вJavascript loop over xml для создания массивов
Вот пример XML:.
<roles>
<role>
<roleName>Impacted User</roleName>
<users>
<user>
<reqUser>1234</reqUser>
<userFirstName>Bob</userFirstName>
<userLastName>Jones</userLastName>
<userNTID>bJones</userNTID>
</user>
<user>
<reqUser>5678</reqUser>
<userFirstName>Mike</userFirstName>
<userLastName>Neil</userLastName>
<userNTID>mneil</userNTID>
</user>
</users>
</role>
<role>
<roleName>Stakeholder</roleName>
<users>
<user>
<reqUser>5555</reqUser>
<userFirstName>Tim</userFirstName>
<userLastName>F</userLastName>
<userNTID>tf</userNTID>
</user>
<user>
<reqUser>4444</reqUser>
<userFirstName>Linda</userFirstName>
<userLastName>E</userLastName>
<userNTID>le</userNTID>
</user>
</users>
</role>
</roles>
Я тогда зацикливание над XML и пытаюсь создать массив объектов. В этом случае в объекте будет два массива. Один называется Ретинированные пользователей, а также другие заинтересованные стороны:
// Do we have users?
var tempObj = Array(),
temp = [];
// Loop over the users on this request such as impacted user or stakeholder
$(data).find('root>details>roles>role').each(function(x) {
// Define our user data
u = $(this);
role = $(u).find('roleName').text();
// Loop through the roles and create an object of data
$(u).find('users>user').each(function(i) {
// Define our data for the iteration
r = $(this);
// Create our object
tempObj[i] = {
reqUser: $(r).find('reqUser').text(),
reqFirst: $(r).find('userFirstName').text(),
reqLast: $(r).find('userLastName').text(),
reqNTID: $(r).find('userNTID').text()
};
})
// Set our array for the specific role in iteration to the object we created
temp[role] = tempObj;
});
// Debug
console.log(temp);
Проблема Я бегу в том, что temp
объект перезаписывается каждый раз, так что только содержит данные из последней итерации я считаю. Я пробовал делать что-то вроде temp[role][x] = tempObj;
, но он сказал, что он недействителен. Он создает оба объекта правильно, но пользовательские данные переписываются каждый раз.
Вопрос только в том, что XML в ваших руках? Смысл, строите ли вы этот XML самостоятельно или это результат API или что-то, что вы не можете изменить? Потому что, если вы сами его создадите, прекратите использовать XML и запустите JSON. Вы избавитесь от боли. Разбор XML - это «последнее десятилетие» :) –
К сожалению, его API; Я могу работать только с тем, что у меня есть:/ – SBB
Просто нажмите на массив внутри цикла. – adeneo