0

我试图在通过 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 Child Child

而我想要实现的是更像

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

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

非常感谢您的任何指点。琳达

4

1 回答 1

0

您的递归调用TraverseNodes正在传递comp它应该传递的地方child

于 2013-01-26T22:15:09.577 回答