Shows how to read an XML file
Download xmlreader.zip
Synopsis: |
| xmlreader.cs |
| xmlitemsreader.cs |
| ||
//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();
}
}
| ||
| ||
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-2010 |