C#打开xml,并绑定TreeView

 

XML读取与写入


 这个代码有个问题就是XML一个节点的属性 xNode.Attributes不能显示出来

以这个优化了一下,见后篇







//CODE

  //加载XML文件,并在TreeView上显示

        public void loadXML(String path)

       {

            try

            {

                this.Cursor =Cursors.WaitCursor;

                XmlDocument xDoc = newXmlDocument();

                xDoc.Load(path);

                XMLTree.Nodes.Clear();

                XMLTree.Nodes.Add(new   TreeNode(xDoc.DocumentElement.Name));

                TreeNode tNode = newTreeNode();

                tNode =(TreeNode)XMLTree.Nodes[0];

                addTreeNode(xDoc.DocumentElement,tNode);

                XMLTree.ExpandAll();

            }

            catch (XmlException xExc)

            {

                MessageBox.Show(xExc.Message);

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

            finally

            {

                this.Cursor = Cursors.Default;//Change the cursor back

            }

        }

 

 

        private void addTreeNode(XmlNode xmlNode,TreeNode treeNode)

        {

            XmlNode xNode;

            TreeNode tNode;

            XmlNodeList xNodeList;

            if (xmlNode.HasChildNodes) //Thecurrent node has children

            {

                xNodeList = xmlNode.ChildNodes;

                for (int x = 0; x <=xNodeList.Count - 1; x++)

                {

                    xNode =xmlNode.ChildNodes[x];

                    //String str ="";

                    //if(xNode.Attributes!=null)

                    //{

                    //    for (int i = 0; i <xNode.Attributes.Count; ++i)

                    //    {

                    //        str = str +xNode.Attributes.Item(i).Name;

                    //        str += "=";

                    //        str += xNode.Attributes.Item(i).Value;

                    //    }

                    //}

 

                    treeNode.Nodes.Add(newTreeNode(xNode.Name));

                    tNode = treeNode.Nodes[x];

                    addTreeNode(xNode, tNode);

                }

            }

            else

                treeNode.Text =xmlNode.OuterXml.Trim();

        }

 

 

 

 //保存XML文件

        private StreamWriter sr;

        public void exportToXml(stringfilename)

        {

            sr = new StreamWriter(filename,false, System.Text.Encoding.UTF8);

            //Write the header

            sr.WriteLine("<?xmlversion=\"1.0\" encoding=\"utf-8\" ?>");

            //Write our root node

            sr.WriteLine("<" +XMLTree.Nodes[0].Text + ">");

            foreach (TreeNode node inXMLTree.Nodes)

            {

                saveNode(node.Nodes);

            }

            //Close the root node

            sr.WriteLine("</" +XMLTree.Nodes[0].Text + ">");

            sr.Close();

        }

        private voidsaveNode(TreeNodeCollection tnc)

        {

            foreach (TreeNode node in tnc)

            {

                //If we have child nodes, we'llwrite

                //a parent node, then iterratethrough

                //the children

                if (node.Nodes.Count > 0)

                {

                   sr.WriteLine("<" + node.Text + ">");

                    saveNode(node.Nodes);

                   sr.WriteLine("</" + node.Text + ">");

                }

                else //No child nodes, so wejust write the text

                    sr.WriteLine(node.Text);

            }

        }

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值