Do you need something like this:
Random rnd = new Random();
List<int> list = new List<int>();
Stack<int> listStack = new Stack<int>();
public void Main()
{
int listNumber = GetUniqueRandomNumber();
// do your parsing stuff
// ...
// When an <ol> is found
listStack.Push(listNumber);
listNumber = GetUniqueRandomNumber();
// Whenever #text is encountered
ListIdentifier = listNumber;
// Whenever </ol> is found
listNumber = listStack.Pop();
}
public int GetUniqueRandomNumber()
{
int num = 0;
while (num == 0)
{
num = rnd.Next(1, 5000);
if (list.Contains(num))
num = 0;
else list.Add(num);
}
return num;
}
So what this is doing is its got a stack that will generate a new unique number everytime an <ol>
is encountered and all text under that can be assigned to that unique number. Whenever a </ol>
is encountered, it pops back to the previous number assigned to the previous list. As long as the <ol>
and </ol>
are balanced, this should work.