复合模式和通过XML文档递归

时间:2013-01-26 22:07:56

标签: c# recursion composite

我正在尝试在递归XML文档时使用复合模式。

到目前为止我的代码是

public Composite TraverseNodes (XmlNodeList nodeList, Composite comp)
    {
       foreach(XmlNode in nodelist)
           if(xNode.Attributes != null)
             {
               Object x = getObjects(xNode) // getObjects returns an OO version of each node & their attributes;
               Composite child = new Composite(x);
               if(x != null)
               {
                   comp.Add(child);
                }
                if (xNode.HasChildNodes)
                {
                      TraverseNodes(xNode.ChildNodes, comp);
                 }
             }
        }

这将通过XML文档递归。我的问题是我希望Composite能够反映XML文档的结构,目前它只生成一个平面列表。所以comp有         比较           儿童           儿童           子

而我想要实现的更像是

    Comp
      Child
         GChild
         GChild
      Child
         GChild
         GChild  
            GGChild ...... and so on.....

我正在使用此链接中的代码构建我的Composite类http://www.dofactory.com/Patterns/PatternComposite.aspx#_self2

非常感谢任何指针。 琳达

1 个答案:

答案 0 :(得分:0)

您对TraverseNodes的递归调用正在通过comp传递child