I have some XML that I am trying to loop over and and create a javascript a object from. Each <roleName>
will be the name of the object and contain the array data of all the <users>
within in.
Here is an example of the 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>
I am then looping over the XML and trying to create an array of objects. In this case, there would be two arrays in the object. One called Impacted Users, and the other Stakeholders:
// 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);
The issue I am running into is that the temp
object is overwritten every time so only contains the data from the last iteration I believe. I tried doing something like temp[role][x] = tempObj;
but it told me it was invalid. It is creating both of the objects correctly but the user data is being overwritten each time.