zoukankan      html  css  js  c++  java
  • 对XML的使用

    一、

    1.先创建一个System.xml的文件

    <?xml version="1.0" encoding="utf-8" ?>
    <systems>
      <system>
        <name>测试A</name>
        <code>testA</code>
        <datasource>Data Source=.;Initial Catalog=【数据库A】; User ID=sa;Password=sa;</datasource>
        <path>http://www.baidu.com/</path>
        <database>数据库A</database>
      </system>
      <system>
         <name>测试B</name>
         <code>testB</code>
         <datasource>Data Source=.;Initial Catalog=【数据库B】; User ID=sa;Password=sa;</datasource>
         <path>http://www.baidu.com/</path>
         <database>数据库B</database>
       </system>
    </systems>

     2.DataSet 类 已经实现了XML读写序列化的方法

    /// <summary>
    /// 子系统信息
    /// </summary>
    public class ChildSystem
    {
        public ChildSystem()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        public string Code { get; set; }
    
        public string DataSource { get; set; }
    
        public string Name { get; set; }
    
        public string Path { get; set; }
    
        public string DataBase { get; set; }
    }
    
    /// <summary>
    /// 子系统集合
    /// </summary>
    public class ChildSystemCollection {
    
        public static List<ChildSystem> Systems {
            get { return GetList(); }
        }
        private static List<ChildSystem> GetList() {
            List<ChildSystem> list = new List<ChildSystem>();
    
            System.Data.DataSet ds = new System.Data.DataSet();
            ds.ReadXml(System.Web.HttpContext.Current.Server.MapPath("~/Test/System.xml"));
            foreach (DataRow dr in ds.Tables[0].Rows) {
                list.Add(new ChildSystem() {
                    Name = dr["Name"].ToString(),
                    Code = dr["Code"].ToString(),
                    DataSource = dr["DataSource"].ToString(),
                    Path = dr["Path"].ToString(),
                    DataBase = dr["DataBase"].ToString()
                });
            }
            return list;
        }
    }

    二、C#读写XML

    1.创建一个chenze.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <cPage></cPage>

    2.读取xml,插入节点

        static void Main(string[] args)
        {
            string xmlUrl = "../../chenze.xml";
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlUrl);
            XmlNode root = xmlDoc.SelectSingleNode("cPage");//查找
    
            XmlElement xe1 = xmlDoc.CreateElement("book");//创建一个节点
            xe1.SetAttribute("genre", "chenze");//设置该节点genre属性
            xe1.SetAttribute("ISBN", "2-3631-4");//设置该节点ISBN属性
    
            XmlElement xesub1 = xmlDoc.CreateElement("title");
            xesub1.InnerText = "CS从入门到精通";//设置文本节点
            xe1.AppendChild(xesub1);//添加到节点中
    
            XmlElement xesub2 = xmlDoc.CreateElement("author");
            xesub2.InnerText = "张三";
            xe1.AppendChild(xesub2);
    
            XmlElement xesub3 = xmlDoc.CreateElement("price");
            xesub3.InnerText = "58.3";
            xe1.AppendChild(xesub3);
    
            root.AppendChild(xe1);//添加到节点中
    
            xmlDoc.Save(xmlUrl);
        }

    结果:

    3.修改节点

        static void Main(string[] args)
        {
            string xmlUrl = "../../chenze.xml";
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlUrl);
            /*将genre属性值为“chenze“的节点的genre值改为“updateCHENZE”,将该节点的子节点的文本修改为“亚胜”。*/
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("cPage").ChildNodes;//获取bookstore节点的所有子节点
            foreach (XmlNode xn in nodeList)//遍历所有子节点
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
                if (xe.GetAttribute("genre") == "chenze")//如果genre属性值为“李赞红”
                {
                    xe.SetAttribute("genre", "updateCHENZE");//则修改该属性为“updateCHENZE”
                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
                    foreach (XmlNode xn1 in nls)//遍历
                    {
                        XmlElement xe2 = (XmlElement)xn1;//转换类型
                        if (xe2.Name == "author")//如果找到
                        {
                            xe2.InnerText = "亚胜";//则修改
                            break;//找到退出来就可以了
                        }
                    }
                    break;
                }
            }
            xmlDoc.Save(xmlUrl);//保存。
        }

    结果:

    4.删除 节点的genre属性,删除 节点

            static void Main(string[] args)
            {
                string xmlUrl = "../../chenze.xml";
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlUrl);
                /*删除 节点的genre属性,删除 节点*/
                XmlNodeList xnl = xmlDoc.SelectSingleNode("cPage").ChildNodes;
                foreach (XmlNode xn in xnl)
                {
                    XmlElement xe = (XmlElement)xn;
                    if (xe.GetAttribute("genre") == "updateCHENZE")
                    {
                        xe.RemoveAttribute("genre");//删除genre属性
                    }
                    //else if (xe.GetAttribute("genre") == "updateCHENZE")
                    //{
                    //    xe.RemoveAll();//删除该节点的全部内容
                    //}
                }
                xmlDoc.Save(xmlUrl);
            }

    结果:

        static void Main(string[] args)
        {
            string xmlUrl = "../../chenze.xml";
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlUrl);
            /*删除 节点的genre属性,删除 节点*/
            XmlNodeList xnl = xmlDoc.SelectSingleNode("cPage").ChildNodes;
            foreach (XmlNode xn in xnl)
            {
                XmlElement xe = (XmlElement)xn;
                if (xe.GetAttribute("genre") == "updateCHENZE11")
                {
                    xe.RemoveAttribute("genre");//删除genre属性
                }
                else if (xe.GetAttribute("genre") == "updateCHENZE")
                {
                    xe.RemoveAll();//删除该节点的全部内容
                }
            }
            xmlDoc.Save(xmlUrl);
        }

    结果:

    5.显示所有数据

    static void Main(string[] args)
    {
        string xmlUrl = "../../chenze.xml";
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlUrl);
        XmlNode root = xmlDoc.SelectSingleNode("cPage");//查找
    
        XmlNodeList xnl = root.ChildNodes;
        foreach (XmlNode xnf in xnl)
        {
            XmlElement xe = (XmlElement)xnf;
            Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
            Console.WriteLine(xe.GetAttribute("ISBN"));
            XmlNodeList xnf1 = xe.ChildNodes;
            foreach (XmlNode xn2 in xnf1)
            {
                Console.WriteLine(xn2.InnerText);//显示子节点点文本
            }
        }
        Console.ReadLine();
    }

    结果:

    三、待补充...

    作者:chenze
    出处:https://www.cnblogs.com/chenze-Index/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    ESXi 5.5 添加驱动
    .net static 变量
    socket
    .net HttpWebRequest 模拟form提交
    node.js form 上传
    .net Thrift 之旅 (二) TServer
    SVN服务器从Windows迁移到LInux
    如何在windows上安装部署设置SVN服务器
    [Ubuntu]在Ubuntu下搭建自己的源服务器
    Eclipse总是自动关闭
  • 原文地址:https://www.cnblogs.com/chenze-Index/p/13885610.html
Copyright © 2011-2022 走看看