.NET平台开发必须掌握的XML知识(二)

    技术2022-05-11  59

    /*********    程序设计目的:往已经存在的XML文件中添加新的节点,并把节点读出来显示在列表框中,同时练习怎么删除节点。   ********//*********    一共用了一个窗体,四个按纽,一个列表框                                                                  ********//*********    主要运用的System.Xml命名空间的类的属性和方法                                                            ********/using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Xml;namespace 操作XML文件{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }

            private void btnLoopXml_Click(object sender, EventArgs e)        {            //Clear ListBox            listBox1XmlNodes.Items.Clear();

                //Load the XML document            XmlDocument document = new XmlDocument();            document.Load(@"C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/Projects/XMLFile1.xml");

                //Loop XML document            recurseXmlDocument((XmlNode)document.DocumentElement, 0);

            }

            //读出节点并显示出来        private void recurseXmlDocument(XmlNode root, int indent)        {            //Make sure we don't do anything if the root is null            if (root == null)            {                return;            }            if (root is XmlElement) //Root is an XmlElement type            {                //first print the name                 listBox1XmlNodes.Items.Add(root.Name.PadLeft(root.Name.Length + indent));

                    //Then check if there are any child nodes and if there are,call this                //method anain to print them                if (root.HasChildNodes)                {                    recurseXmlDocument(root.FirstChild, indent + 2);                }

                    //Finally check tosee if there are any siblings and if there are                 //call this method again to have them printed                if (root.NextSibling != null)                    recurseXmlDocument(root.NextSibling, indent);            }            else if(root is XmlText)            {                //Print the text                string text  = ((XmlText)root).Value;                listBox1XmlNodes.Items.Add(text.PadLeft(text.Length+indent));            }            else if(root is XmlComment)            {                //print text                string text = root.Value;                listBox1XmlNodes.Items.Add(text.PadLeft(text.Length+indent));

                    //Then check if there are any child nodes,and jf there are                //method again to print them                if(root.HasChildNodes)                {                    recurseXmlDocument(root.FirstChild,indent+2);                }                                                     //Finally,check to see if there are any siblings,and if there are                  //call this method again to have them printed.                if (root.NextSibling!=null)                {                    recurseXmlDocument(root.NextSibling,indent);                }            }        }

            private void button1_Click(object sender, EventArgs e)        {             MessageBox.Show("关闭窗口!");             this.Close();        }

            //添加节点        private void btnCreateNode_Click(object sender, EventArgs e)        {            //Load the XML document            XmlDocument document = new XmlDocument();            document.Load(@"C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/Projects/XMLFile1.xml");

                //Get the root element            XmlElement root = document.DocumentElement;

                //create the new nodes            XmlElement newStory = document.CreateElement("story");            XmlElement newTitle = document.CreateElement("title");            XmlElement newAuthor = document.CreateElement("author");            XmlElement newName = document.CreateElement("name");            XmlElement newNationality = document.CreateElement("nationality");            XmlElement newRating = document.CreateElement("rating");

                XmlComment comment = document.CreateComment("This story is the story you are reading!");            XmlText title = document.CreateTextNode("美丽人生");            XmlText name = document.CreateTextNode("王亚楠");            XmlText nationality = document.CreateTextNode("中国");            XmlText rating = document.CreateTextNode("智慧,美丽,时尚,活力");          

                //Insert the element            newStory.AppendChild(comment);            newStory.AppendChild(newTitle);            newStory.AppendChild(newAuthor);            newStory.AppendChild(newRating);

                newTitle.AppendChild(title);          

                newAuthor.AppendChild(newName);            newAuthor.AppendChild(newNationality);          

                newName.AppendChild(name);            newNationality.AppendChild(nationality);

                newRating.AppendChild(rating);

                           root.InsertAfter(newStory,root.LastChild);            root.InsertAfter(newStory,root.FirstChild);            document.Save(@"C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/Projects/XMLFile1.xml");

                      }

            //删除节点        private void btnDeleteNode_Click_1(object sender, EventArgs e)        {            //Load XML document            XmlDocument document = new XmlDocument();            document.Load(@"C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/Projects/XMLFile1.xml");

                //Get the root element            XmlElement root = document.DocumentElement;            // Find the node.root is the <story>tag,soits last child            //while will be the last <book> node.            if (root.HasChildNodes)            {                XmlNode story = root.LastChild;

                    //Delete the child                root.RemoveChild(story);

                    //Save the document story to disk                document.Save(@"C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/Projects/XMLFile1.xml");            }        }

         }}

    //本程序是先利用btnCreateNode按纽往XML文件中写入数据,然后再利用btnLoopXml按纽读出数据显示在列表框listBox1XmlNodes中//读数据时主要利用了recurseXmlDocument(XmlNode root, int indent)方法迭代XML中的元素//问题的关键在于recurseXmlDocument(XmlNode root, int indent)方法的编写 


    最新回复(0)