【问题标题】:Creating XML Hierarchy with recursion使用递归创建 XML 层次结构
【发布时间】:2013-01-09 16:50:36
【问题描述】:

我正在尝试在 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") 行中收到空引用错误

谁能帮帮我?

【问题讨论】:

    标签: recursion linq-to-xml xelement


    【解决方案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;
    }
    

    【讨论】: