0

I am trying to create a hierarchical tree structure like below in LINQtoXML.

 <Item>
   <Item>
      <Item>
      </Item>
   </Item>
 </Item>

The number of child level is dynamic. It can be any number.

public static XElement BuildTree(int numberOfLevel)
{
    XElement parent=new XElement("Item");
    AddChild(parent,numberOfLevel);
    return parent;
}
public static XElement AddChild(XElement elm, int numberofLevel)
{
    while (numberofLevel > 1)
    {
        numberofLevel--;
        elm.Element("Item").Add(AddChild(elm, numberofLevel));
    }
    return elm;
}

But when running i am getting a null reference error in the line elm.Element("Item")

Can anyone help me ?

Alex
  • 21,273
  • 10
  • 61
  • 73
Happy
  • 1,767
  • 6
  • 22
  • 26

1 Answers1

0
public static XElement BuildTree(int numberOfLevel)
{
    XElement parent = new XElement("Item");
    AddChild(parent,numberOfLevel);
    return parent;
}

public static void AddChild(XElement elm, int numberofLevel)
{
    if(numberofLevel > 1)
    {
        XElement newElm = new XElement("Item");
        elm.Add(newElm);
        AddChild(newElm, numberOfLevel - 1);
    }
}

But it can be don't without using recursion as well:

public static XElement BuildTree(int numberOfLevel)
{
    XElement parent = new XElement("Item");
    XElement current = parent;
    while(numberOfLevel > 1)
    {
         XElement newElement = new XElement("Item");
         current.Add(newElement);
         current = newElement;
         numberOfLevel--;
    }
    return parent;
}
MarcinJuraszek
  • 124,003
  • 15
  • 196
  • 263