xml层次不限。
自己写了一个递归。速度太慢了!
求广法。给些代码参考也可。

解决方案 »

  1.   

    考虑使用XSLT直接将你的XML转换成目标HTML
      

  2.   

    我的想法,读取xml应该比较慢,你可以这样,用 dataset的 ReadXml()方法,把xml数据读成datatable,然后操作,我感觉这样应该比较快
      

  3.   

    http://www.cnblogs.com/wuchang/archive/2006/12/01/578719.html
      

  4.   

    同4楼
    lz可否提供些xml片断
      

  5.   

    <Z><Dic name="zepto-" Algebra="0" Geometry="0" Measurement="0" NumberSense="0" Statistics="0" filePath="z/zepto-.xml" Grade="k7,k8,k9-12"/><Dic name="zero" Algebra="1" Geometry="0" Measurement="0" NumberSense="1" Statistics="0" filePath="z/zero.xml" Grade="k2,k3,k4,k5,k6,k7,k8,k9-12"/><Dic name="zero matrix (null matrix)" Algebra="1" Geometry="0" Measurement="0" NumberSense="0" Statistics="0" filePath="z/zeromatrixnullmatrix.xml" Grade="k7,k8,k9-12"/><Dic name="zero property of addition" Algebra="1" Geometry="0" Measurement="0" NumberSense="0" Statistics="0" filePath="z/zeropropertyofaddition.xml" Grade="k2,k3,k4,k5,k6,k7,k8,k9-12"/><Dic name="zero property of multiplication" Algebra="1" Geometry="0" Measurement="0" NumberSense="0" Statistics="0" filePath="z/zeropropertyofmultiplication.xml" Grade="k3,k4,k5,k6,k7,k8,k9-12"/><Dic name="zetta-" Algebra="0" Geometry="0" Measurement="0" NumberSense="0" Statistics="0" filePath="z/zetta-.xml" Grade="k7,k8,k9-12"/><Dic name="zone" Algebra="0" Geometry="0" Measurement="0" NumberSense="0" Statistics="0" filePath="z/zone.xml" Grade="k7,k8,k9-12"/></Z>
      

  6.   

            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(textBox1.Text);                XmlNodeList xmlNodes = xmlDoc.DocumentElement.ChildNodes;                this.treeView1.BeginUpdate();
                    this.treeView1.Nodes.Clear();
                    treeView1.Nodes.Add(new TreeNode(xmlDoc.DocumentElement.Name));
                    ReadTreeNode(xmlNodes, this.treeView1.Nodes[0].Nodes);
                    this.treeView1.EndUpdate();
                }
                catch (Exception e)
                {
                                                    
                }
            }
            private void ReadTreeNode(XmlNodeList xmlNode, TreeNodeCollection treeNode)
            {
                foreach (XmlNode var in xmlNode)
                {
                    if (var.NodeType != XmlNodeType.Element)
                    {
                        continue;
                    }
                    
                    TreeNode newTreeNode = new TreeNode();                                if (var.HasChildNodes)
                    {
                        newTreeNode.Text = var.Name;
                        ReadTreeNode(var.ChildNodes, newTreeNode.Nodes);
                    }
                    else
                    {
                        if (var.Attributes.Count !=0)
                            newTreeNode.Text = var.Attributes[0].Value;
                        else
                            newTreeNode.Text = var.Name;
                    }                
                    treeNode.Add(newTreeNode);
                }
            }