while (depEnumerator.MoveNext()) { String pkgName = ""; String pkgVer = ""; // ASSUMPTION: choice nodes are done right; must at some point do // a DTD and get this all straightened out XmlNode subNode = (XmlNode)depEnumerator.Current; XmlNodeList subNodeList = subNode.ChildNodes; IEnumerator subEnumerator = subNodeList.GetEnumerator(); while (subEnumerator.MoveNext()) { subNode = (XmlNode)subEnumerator.Current; switch (subNode.Name) { case "name": { pkgName = tempNode.InnerText.Trim(); break; } case "version": { pkgVer = tempNode.InnerText.Trim(); break; } } } EntryDetails temp = new EntryDetails(pkgName, pkgVer, ""); dependencies.Add(temp); } and the XML: gecko-core 1.3.3.7