private void ProcessDatasetsInternal(XmlNode n) {
Hashtable ss = new Hashtable();
XmlNode n2 = n.FirstChild;
while (n2 != null) {
if (n2.NodeType == XmlNodeType.Element) {
String s = EscapeSom(n2.LocalName);
int i;
if (ss[s] == null)
i = 0;
else
i = (int)ss[s] + 1;
ss[s] = i;
if (HasChildren(n2)) {
stack.Push(s + "[" + i.ToString() + "]");
ProcessDatasetsInternal(n2);
stack.Pop();
}
else {
stack.Push(s + "[" + i.ToString() + "]");
String unstack = PrintStack();
order.Add(unstack);
InverseSearchAdd(unstack);
name2Node[unstack] = n2;
stack.Pop();
}
}
n2 = n2.NextSibling;
}
}
}