Если это в ASP.NET, тогда я не понимаю, зачем вам создавать новый объект SessionStateItemCollection. В этом случае, так как вам нужно справиться с сохранением этого между страницами самостоятельно.
ASP.NET предоставляет доступ к объекту SessionStateItemCollection через объект Session объекта Page или объект HttpContext.Current, если вы хотите использовать его из класса. Вы можете хранить там пары ключей и значений через объект Session и извлекать их из объекта Session на последующих страницах.
Я бы переписал твой код следующим образом
System.Xml.XmlDocument oXmlDoc = new System.Xml.XmlDocument();
oXmlDoc.Load(Server.MapPath("xml.xml")); //load XML file
XmlNode root = oXmlDoc.DocumentElement;
for (int x = 0; x < root.ChildNodes.Count; x++) //loop through children and add to session
{
Session[root.ChildNodes.Item(x).Name] = root.ChildNodes.Item(x).InnerText; //add xml values to session
}
Теперь вы можете получить доступ к содержимому с другой страницы, используя объект Session (следующий код будет проходить через все хранилище в сеансе):
for (int i = 0; i < Session.Count; i++)
{
Response.Write(Session.Keys[i] + "-" + Session[i].ToString());
}