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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    yii2 gii 命令行自动生成控制器和模型
    控制器中的方法命名规范
    Vue Property or method "" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based
    IDEA插件:GsonFormat
    Spring Boot : Access denied for user ''@'localhost' (using password: NO)
    Typora添加主题
    Git基础命令图解
    Java Joda-Time 处理时间工具类(JDK1.7以上)
    Java日期工具类(基于JDK1.7版本)
    Oracle SQL Developer 连接Oracle出现【 状态: 失败 -测试失败: ORA-01017: invalid username/password; logon denied】
  • 原文地址:https://www.cnblogs.com/chenze-Index/p/13885610.html
Copyright © 2011-2022 走看看