使用递归创建XML层次结构

时间:2013-01-09 16:50:36

标签: recursion linq-to-xml xelement

我正在尝试在LINQtoXML中创建如下所示的分层树结构。

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

子级别的数量是动态的。它可以是任何数字。

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

但是在运行时我在行elm.Element("Item")

中得到一个空引用错误

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分: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);
    }
}

但也可以不使用递归:

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