void procToken(Token t) { switch (t.Type) { case Token.TokType.OPEN_TAG: Element e = new Element(); e.Name = t.Value; //m_tokStack.Push(t); m_eltStack.Push(e); break; case Token.TokType.CLOSE_TAG: List<Element> lst = new List<Element>(); Element top = m_eltStack.Peek(); string name = top.Name; while (name.CompareTo(t.Value) != 0) { lst.Add(m_eltStack.Pop()); top = m_eltStack.Peek(); name = top.Name; } top.Children.AddRange(lst); if(name.CompareTo("OFX") == 0) m_finished = true; break; case Token.TokType.TEXT: m_eltStack.Peek().appendText(t.Value); break; case Token.TokType.EOF: throw new ParserException(t, "Unexpected end of file"); } }
static void showElement(Element e) { System.Console.Out.WriteLine("<" + e.Name + ">" + e.Text); foreach(Element c in e.Children) { showElement(c); } System.Console.Out.WriteLine("</" + e.Name + ">"); }