reader

Shows how to read an XML file

Download xmlreader.zip

Synopsis:

xmlreader.cs
xmlitemsreader.cs


xmlreader.cs

Synopsis
//WARNING: NO UNITTEST
using System;
using System.Collections;
using System.Xml;

  public class xmlreader
  {
    private ArrayList mList;
    private string mFilename;
    private XmlItemsReader reader;
    private string element;
    
    private string mDesc;

    public xmlreader(string fname, ArrayList list)
    {
      mList = list;
      mFilename = fname;
    }
    public void parse()
    {
      mList.Clear();
      reader = new XmlItemsReader(mFilename);
      while (reader.Read())
      {
        if (reader.IsIgnoredElement())
          continue;
        else if (reader.IsRootTag())
          continue;
        else if (reader.IsStartTag())
          OnStartTag();
        else if (reader.IsElementValue())
          OnElementValue();
        else if (reader.IsEndTag())
          OnEndTag();
        else
          Console.WriteLine("Unknown Nodetype='{0}' found at line {1}", reader.NodeType.ToString(), reader.LineNumber);
      }
      reader.Close();     
    }
    //-----------------------------------
    //-- private from here on
    //-----------------------------------
    private void OnStartTag()
    {
      if (reader.IsNodeStartTag())
        ResetAll();
      else
        OnOtherStartTag();
        
      if (reader.IsEmptyElement)
        OnElementValue();
    }
    private void ResetAll()
    {
      mDesc = null;
    }
    private void OnElementValue()
    {
      if (element == null) return;
        
      if (element.Equals("desc"))
        mDesc = reader.Value;
      else
        Console.WriteLine("Unknown tag '{0}' found at line {1}", element, reader.LineNumber);
    }
    private void OnEndTag()
    {
      if (reader.IsNodeStartTag())
        OnLinkEndTag();
    }
    private void OnLinkEndTag()
    {
      mList.Add(mDesc);
    }
    private void OnOtherStartTag()
    {
      element = reader.LocalName.ToLower();
    }
  }

xmlitemsreader.cs

Synopsis
using System;
using System.Xml;

public class XmlItemsReader : XmlTextReader
{
  private readonly string cRootTag = "items";
  private readonly string cNodeTag = "item";

  public XmlItemsReader(string path) : base(path)
  {
  }
  public bool IsStartTag()
  {
    return this.IsStartElement();
  }
  public bool IsEndTag()
  {
    return this.NodeType == XmlNodeType.EndElement;
  }
  public bool IsElementValue()
  {
    return this.NodeType == XmlNodeType.Text;
  }
  public bool IsIgnoredElement()
  {
    return this.NodeType == XmlNodeType.None ||
      this.NodeType == XmlNodeType.XmlDeclaration ||
      this.NodeType == XmlNodeType.Whitespace ||
      this.NodeType == XmlNodeType.Comment ||
      this.NodeType == XmlNodeType.ProcessingInstruction;
  }
  public bool IsRootTag()
  {
    return this.LocalName.ToLower().Equals(cRootTag);
  }
  public bool IsNodeStartTag()
  {
    return this.LocalName.ToLower().Equals(cNodeTag);
  }
}






Contact me about content on this page using john_web-at-arrizza-dot-com
For Web Master or site problems contact: webadmin-at-arrizza-dot-com
Copyright John Arrizza (c) 2001,2002,2003,2004,2005,2006,2007