-
Notifications
You must be signed in to change notification settings - Fork 1
/
cfgNode.cs
70 lines (62 loc) · 1.84 KB
/
cfgNode.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Xml;
namespace Convert_to_WPF
{
public class attribute
{
public string name = String.Empty;
public string value = String.Empty;
}
public class cfgNode
{
public ArrayList children = new ArrayList();
public ArrayList attributes = new ArrayList();
public string text = String.Empty;
public string name = String.Empty;
public cfgNode(string n)
{
name = n;
}
public int parse(XmlTextReader r)
{
bool parse_doc = !r.IsEmptyElement;
if (r.HasAttributes)
{
for (int i = 0; i < r.AttributeCount; i++)
{
r.MoveToAttribute(i);
attribute a = new attribute();
a.name = r.Name;
a.value = r.Value;
attributes.Add(a);
}
}
while (parse_doc)
{
parse_doc = r.Read();
switch (r.NodeType)
{
case XmlNodeType.Element:
cfgNode n = new cfgNode(r.Name);
n.parse(r);
children.Add(n);
break;
//
//you can handle other cases here
//
case XmlNodeType.EndElement:
parse_doc = false;
break;
case XmlNodeType.Text:
text = r.Value;
break;
}
}
return children.Count;
}
}
}