zoukankan      html  css  js  c++  java
  • C#关于XML的一些简单用法

      关于XML文件的用法,本文简单介绍创建、读取和增删操作 。

      1.创建有三种方法

      (1)通过XmlDocument创建,然后分级添加子目录

     XmlDocument doc = new XmlDocument();
                XmlElement root = doc.CreateElement("album");
                // 创建根节点
                root.SetAttribute("name", "album1");
                // 设置属性
                doc.AppendChild(root);
                //  加入到xml document
                XmlElement preview = doc.CreateElement("Preview");
                // 创建preview元素
                preview.SetAttribute("path", "album1");
                preview.SetAttribute("extension", "xpi");
                preview.SetAttribute("sizew", "680");
                //    设置属性
                preview.SetAttribute("sizeh", "474");
                preview.SetAttribute("totalpage", "25");
                root.AppendChild(preview);
                // 添加到xml document
                XmlElement page = doc.CreateElement("Page");
                page.SetAttribute("id", "0");
                page.SetAttribute("text", "封面");
                page.SetAttribute("bgimg", "fm.xpi");
                page.SetAttribute("sizew", "680");
                page.SetAttribute("sizeh", "474");
                page.SetAttribute("totalphoto", "2");
                preview.AppendChild(page);
    
                XmlElement photo1 = doc.CreateElement("Photo");
                photo1.SetAttribute("id", "0");
                photo1.SetAttribute("x", "0");
                photo1.SetAttribute("y", "0");
                photo1.SetAttribute("minw", "5029");
                photo1.SetAttribute("minh", "3504");
                photo1.SetAttribute("pwidth", "680");
                photo1.SetAttribute("pheight", "474");
                photo1.SetAttribute("image", "hard_cover_color.xpi");
                page.AppendChild(photo1);
    
                XmlElement photo2 = doc.CreateElement("Photo");
                photo2.SetAttribute("id", "1");
                photo2.SetAttribute("x", "138");
                photo2.SetAttribute("y", "117");
                photo2.SetAttribute("minw", "3155");
                photo2.SetAttribute("minh", "1925");
                photo2.SetAttribute("pwidth", "406");
                photo2.SetAttribute("pheight", "243");
                photo2.SetAttribute("image", "sampleS.xpi");
                page.AppendChild(photo2);
                //保存
                doc.Save(@"album1.xml");
    View Code

       doc是新建的XML文件,然后CreatElement(album)创建XML内部成员,通过SetAttribute设置其属性,在设置属性后将album添加到doc中(doc.AppendChild),这样就在doc中完整添加了一个根目录。在再次CreatElement时,根据其AppendChild的对象位置可以设置其是哪级目录下。

      (2)创建XML文件后直接通过文本形式Load其内部内容

    XmlDocument xmldoc = new XmlDocument(); //创建空的XML文档 
                xmldoc.LoadXml("<?xml version='1.0' encoding='gb2312'?>" +
                "<bookstore>" +
                "<book genre='fantasy' ISBN='2-3631-4'>" +
                "<title>Oberon's Legacy</title>" +
                "<author>Corets, Eva</author>" +
                "<price>5.95</price>" +
                "</book>" +
                "</bookstore>");
                xmldoc.Save("bookstore2.xml"); //保存 
    View Code

      (3)此方式是较为完整的创建方法,其内部各属性参数设置全面

     XmlText xmltext;
                XmlDocument xmldoc = new XmlDocument();
    
                //加入XML的声明段落 
                XmlNode xmlnode = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
                xmldoc.AppendChild(xmlnode);
    
                //加入一个根元素 
                XmlElement xmlelem = xmldoc.CreateElement("", "bookstore", "");
                xmltext = xmldoc.CreateTextNode("1111");
                xmlelem.AppendChild(xmltext);
                xmldoc.AppendChild(xmlelem);
    
                //加入一个子元素 
                XmlElement xmlelem1 = xmldoc.CreateElement("", "book", "");
                xmltext = xmldoc.CreateTextNode("2222");
                xmlelem1.AppendChild(xmltext);
                //为子元素"book"增加两个属性 
                xmlelem1.SetAttribute("genre", "", "fantasy");
                xmlelem1.SetAttribute("ISBN", "2-3631-4");
    
                xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1);
    
                //创建三个子元素的子元素 
                XmlElement xmlelem2 = xmldoc.CreateElement("", "title", "");
                xmltext = xmldoc.CreateTextNode("Oberon's Legacy");
                xmlelem2.AppendChild(xmltext);
                xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem2);
    
                XmlElement xmlelem3 = xmldoc.CreateElement("", "author", "");
                xmltext = xmldoc.CreateTextNode("Corets, Eva");
                xmlelem3.AppendChild(xmltext);
                xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem3);
    
                XmlElement xmlelem4 = xmldoc.CreateElement("", "price", "");
                xmltext = xmldoc.CreateTextNode("5.95");
                xmlelem4.AppendChild(xmltext);
                xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem4);
                xmldoc.Save("bookstore.xml"); //保存 
                showcontent.Text = "";
                showcontent.Text = xmldoc.InnerXml;
    View Code

      2.打开XML文件,两种方式

      (1)通过新建一个XML文件然后Load打开

    XmlDocument xmldoc= new XmlDocument();
                xmldoc.Load("album1.xml");
                showcontent.Text = "";
                showcontent.Text = xmldoc.InnerXml;
    View Code

      (2)通过XmlTextReader新建

     XmlTextReader reader = new XmlTextReader("album1.xml");
                while (reader.Read()) MessageBox.Show(reader.Name);
                reader.Close();
    View Code

      记得在结尾做Close()。


      3.寻找和插入节点。

      (1)通过属性匹配找到需要的节点,然后增加新的节点

     XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load("album1.xml");
                XmlElement root = xmldoc.DocumentElement;
                //查找结点 增加新的子节点
                foreach (XmlNode item in root.ChildNodes)
                {
                    if (item.Attributes["sizeh"].Value == "474")
                    {
                        XmlElement photo2 = xmldoc.CreateElement("photo01");
                        photo2.SetAttribute("id", "1");
                        photo2.SetAttribute("x", "138");
                        photo2.SetAttribute("y", "117");
                        photo2.SetAttribute("minw", "3155");
                        photo2.SetAttribute("minh", "1925");
                        photo2.SetAttribute("pwidth", "406");
                        photo2.SetAttribute("pheight", "243");
                        photo2.SetAttribute("image", "sampleS.xpi");
                        item.AppendChild(photo2);
                        xmldoc.Save(@"album02.xml");
    View Code

      4.寻找和删除节点

      (1)和上面相似,通过foreach查找,找到属性相对应的节点然后remove()

     XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(@"album1.xml");
                XmlElement root = xmldoc.DocumentElement;
                // 查找结点 增加新的子节点
                foreach (XmlNode item in root.ChildNodes)
                {
                    if (item.Attributes["sizeh"].Value == "474")
                    {
                        item.RemoveAll();
                        xmldoc.Save(@"album02.xml");
                    }
                }
    View Code

      (2)获取节点列表,然后通过Foreach查找其需求(Photo)相对应的选项remove()

    XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(@"album1.xml");
                XmlNodeList nodelist = xmldoc.SelectSingleNode("album").ChildNodes;
                //找到根节点,并读出其子节点列表        
                foreach (XmlNode xn in nodelist)
                {
                    XmlElement xel = (XmlElement)xn;
                    XmlNodeList node = xel.GetElementsByTagName("Photo");
                    if (node.Count > 0)
                    {
                        if (node[0].InnerText == "")
                            xel.RemoveAll();
                        //break;
                    }
                }
                xmldoc.Save(@"album02.xml");
    View Code

      写在最后,上述这些关于XML的操作是通过百度得来的点点滴滴,然后总结得来的,有的因为自己偷懒还把原作者的例子也搬来了,只是整理的时间有些长,导致原作者的博客地址没有保存到,所以没有标记声明原作者内容,在此道歉。

      第一次写博客,目的是整理所学到的,分享给大家借鉴。有错的地方,麻烦指正。

  • 相关阅读:
    Html5页面返回机制解决方案
    Linux(Fedora)下NodeJs升级最新版本(制定版本)
    fedora23开发环境搭建手册
    fedora安装sublime text教程
    实现斐波那契数列之es5、es6
    选择城市下拉框中选择框右对齐,文本右对齐问题
    前端笔记(二)
    前端基础笔记(一)
    解决点击输入框弹出软键盘导致弹窗失效的问题
    angularJS之ng-bind与ng-bind-template的区别
  • 原文地址:https://www.cnblogs.com/Khan-Sadas/p/4736396.html
Copyright © 2011-2022 走看看