It looks to me like the problem might be that you're not stopping the parse in your didEndElement implementation. You have a line if (elementName isEqualToString:kExpiry) so that's why you only get one date. But you don't do that for the "settle" and the "variation" so you get all of them.
You add them to the dictionary and you add the dictionary to the array but those are just pointers, so data keeps coming in and it keeps getting added to them - inside the dictionary inside the array.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.