76 lines
1.8 KiB
C#
76 lines
1.8 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Xml;
|
|
|
|
namespace Server.Gumps
|
|
{
|
|
public class ParentNode
|
|
{
|
|
private readonly ParentNode m_Parent;
|
|
private object[] m_Children;
|
|
private string m_Name;
|
|
public ParentNode(XmlTextReader xml, ParentNode parent)
|
|
{
|
|
this.m_Parent = parent;
|
|
|
|
this.Parse(xml);
|
|
}
|
|
|
|
public ParentNode Parent
|
|
{
|
|
get
|
|
{
|
|
return this.m_Parent;
|
|
}
|
|
}
|
|
public object[] Children
|
|
{
|
|
get
|
|
{
|
|
return this.m_Children;
|
|
}
|
|
}
|
|
public string Name
|
|
{
|
|
get
|
|
{
|
|
return this.m_Name;
|
|
}
|
|
}
|
|
private void Parse(XmlTextReader xml)
|
|
{
|
|
if (xml.MoveToAttribute("name"))
|
|
this.m_Name = xml.Value;
|
|
else
|
|
this.m_Name = "empty";
|
|
|
|
if (xml.IsEmptyElement)
|
|
{
|
|
this.m_Children = new object[0];
|
|
}
|
|
else
|
|
{
|
|
ArrayList children = new ArrayList();
|
|
|
|
while (xml.Read() && (xml.NodeType == XmlNodeType.Element || xml.NodeType == XmlNodeType.Comment))
|
|
{
|
|
if (xml.NodeType == XmlNodeType.Comment)
|
|
continue;
|
|
|
|
if (xml.Name == "child")
|
|
{
|
|
ChildNode n = new ChildNode(xml, this);
|
|
|
|
children.Add(n);
|
|
}
|
|
else
|
|
{
|
|
children.Add(new ParentNode(xml, this));
|
|
}
|
|
}
|
|
|
|
this.m_Children = children.ToArray();
|
|
}
|
|
}
|
|
}
|
|
} |