Ejemplo n.º 1
0
        public SimpleElement parse(XmlTextReader reader)
        {
            SimpleElement se = null;
             this.Reader = reader;
             while (!Reader.EOF)
             {
            Reader.Read();
            switch (Reader.NodeType)
            {
               case XmlNodeType.Element :
                  // create a new SimpleElement
                  se = new SimpleElement(Reader.LocalName);
                  currentElement = se;
                  if (elements.Count == 0)
                  {
                     rootElement = se;
                     elements.Push(se);
                  }
                  else
                  {
                     SimpleElement parent = (SimpleElement) elements.Peek();
                     parent.ChildElements.Add(se);

                     // don['t push empty elements onto the stack
                     if (Reader.IsEmptyElement) // ends with "/>"
                     {
                        break;
                     }
                     else {
                        elements.Push(se);
                     }
                  }
                  if (Reader.HasAttributes)
                  {
                     while(Reader.MoveToNextAttribute())
                     {
                        currentElement.setAttribute(Reader.Name,Reader.Value);
                     }
                  }
                  break;
               case XmlNodeType.Attribute :
                  se.setAttribute(Reader.Name,Reader.Value);
                  break;
               case XmlNodeType.EndElement :
                  //pop the top element
                  elements.Pop();
                  break;
               case XmlNodeType.Text :
                  currentElement.Text=Reader.Value;
                  break;
               case XmlNodeType.CDATA :
                  currentElement.Text=Reader.Value;
                  break;
               default :
                  // ignore
                  break;
            }
             }
             return rootElement;
        }
Ejemplo n.º 2
0
        private static void printTree(SimpleElement se, StringBuilder sb, int depth)
        {
            sb.Append(new string('\t',depth) +  "<" + se.TagName);
             foreach (string attName in se.Attributes.Keys) {
            sb.Append(" " + attName + "=" + "\"" + se.Attribute(attName) + "\"");
             }
             sb.Append(">" + se.Text.Trim());
             if (se.ChildElements.Count > 0)
             {
            sb.Append(System.Environment.NewLine);
            depth +=1;
            foreach(SimpleElement ch in se.ChildElements)
            {
               //sb.Append(System.Environment.NewLine);
               printTree(ch, sb, depth);
            }

            depth -= 1;
            sb.Append(new string('\t',depth) + "</" + se.TagName + ">" + System.Environment.NewLine);
             }
             else
             {
            sb.Append("</" + se.TagName + ">" + System.Environment.NewLine);
             }
        }
Ejemplo n.º 3
0
 static void Main()
 {
     int starttick;
      int endtick;
      int i;
      XmlTextReader rdr;
      StringBuilder sb;
      SimpleElement se = new SimpleElement("junk");
      SimpleDOMParser sdp;
      sb = new StringBuilder();
      try
      {
     starttick = System.Environment.TickCount;
     for (i=0; i < 10; i++)
     {
        rdr = new XmlTextReader(@"c:\rjones\temp\employees.xml");
        sdp = new SimpleDOMParser();
        se = sdp.parse(rdr);
        rdr.Close();
     }
     endtick = System.Environment.TickCount;
     sb = new StringBuilder();
     printTree(se, sb, 0);
     System.Diagnostics.Debug.WriteLine(sb.ToString());
     System.Diagnostics.Debug.WriteLine(endtick - starttick);
      }
      catch (Exception ex)
      {
     System.Diagnostics.Debug.WriteLine(ex.Message);
      }
 }
Ejemplo n.º 4
0
 public SimpleDOMParser()
 {
     elements = new Stack();
      currentElement = null;
 }
Ejemplo n.º 5
0
 public void Add(SimpleElement se)
 {
     this.List.Add(se);
 }