Создание иерархии XML с рекурсией

Я пытаюсь создать иерархическую древовидную структуру как ниже в LINQtoXML.

 
   
      
      
   
 

Количество детского уровня динамичное. Это может быть любое число.

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")

Кто-либо может помочь мне?

0
nl ja de

1 ответы

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);
    }
}

Но это может быть, не делают, не используя рекурсию также:

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;
}
0
добавлено