C#读写xml总结

来源:互联网 发布:梦三国2网络原因失败 编辑:程序博客网 时间:2024/06/05 04:58
        private void readXml()         {            // 读取的基本思路:            // 可以一次获取一个节点列表出来:XmlNodeList = XmlDocument.GetElementsByTagName("节点名称")            // 遍历这个节点列表:foreach (XmlElement item in xmlNodeList) {}            // 获取一个节点的属性值:XmlElement.GetAttribute("属性名");            // 获取一个节点的子节点列表:XmlNodeList = XmlElement.ChildNodes;            // 获取XmlNodeList的某个子节点:xnl[i]            // 获取XmlNodeList的某个子节点的节点值:xnl[i].InnerXml            string fileName = @"D:\test.xml";            XmlDocument xd = new XmlDocument();            xd.Load(fileName);            XmlNodeList xmlNodeList = xd.GetElementsByTagName("user");            List<User> users = new List<User>();            foreach (XmlElement item in xmlNodeList)             {                User user = new User();                user.Id = int.Parse(item.GetAttribute("id"));                XmlNodeList xnl = item.ChildNodes;                user.Name = xnl[0].InnerXml;                user.Age = int.Parse(xnl[1].InnerXml);                user.Gender = xnl[2].InnerXml;                users.Add(user);            }            foreach (var item in users)             {                Debug.WriteLine(item);            }        }        private void writeXml()        {            // 基本思路是:            // 创建xml声明:XmlNode = XmlDocument.CreateXmlDeclaration("1.0", "utf-8", null);            // 创建一个节点:XmlElement = XmlDocument.CreateElement("节点名");            // 给节点设置属性:XmlElement.SetAttribute("属性名","属性值");            // 给节点设置Text:XmlElement.InnerText = "值"            // 添加子节点到父节点:XmlElement.AppendChild(子节点);            Debug.WriteLine("test ok!");            string fileName = @"D:\test.xml";            XmlDocument xmlDoc = new XmlDocument();            XmlNode header = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);            xmlDoc.AppendChild(header);            XmlElement rootNode = xmlDoc.CreateElement("users");            List<User> list = GetUsers();            foreach (var item in list)             {                XmlElement xn = InsertUser(item, xmlDoc);                rootNode.AppendChild(xn);            }            xmlDoc.AppendChild(rootNode);            xmlDoc.Save(fileName);        }        private static XmlElement InsertUser(User user, XmlDocument xmlDoc)         {            // 创建一个节点,标签是user            XmlElement xn = xmlDoc.CreateElement("user");            // 给这个节点设置一个属性名为id,并为此属性赋值            xn.SetAttribute("id", user.Id + "");            // 此标签下append新的节点            xn.AppendChild(GetXmlNode(xmlDoc,"name",user.Name));            xn.AppendChild(GetXmlNode(xmlDoc, "age", user.Age + ""));            xn.AppendChild(GetXmlNode(xmlDoc, "gender", user.Gender));            return xn;        }        private static XmlElement GetXmlNode(XmlDocument xmlDoc, string name, string value)         {            // 创建一个节点,被赋予text值,但是不赋予属性            XmlElement xn = xmlDoc.CreateElement(name);            xn.InnerText = value;            return xn;        }        private static List<User> GetUsers()         {            List<User> list = new List<User>();            for (int i = 0; i < 10; i++)             {                User user = new User();                user.Id = i;                user.Name = "Name" + i;                user.Age = 15;                user.Gender = "男";                list.Add(user);            }            return list;        }



user类:

    class User    {        public int Id { set; get; }        public string Name { get; set; }        public int Age { get; set; }        public string Gender { set; get; }        public override string ToString()        {            return Id + "," + Name + "," + Age + "," + Gender;        }    }


// 注意非法字符转义

&lt;  <  小于

&gt; >  大于

&amp;  &  和号

&apos;  '  单引号

&quot;   "  双引号

只需要在xml里面,对应的非法字符替换为左边的转义字符,则读写都按照当没有这个转义存在一样

比如xml里:

      <add key="key1" value="hello"/>      <add key="key2" value="world!"/>      <add key="CIF" value="1"/>      <add key="C&amp;F" value="2"/>      <add key="FOB" value="3"/>      <add key="C&amp;I" value="4"/>      <add key="市场价" value="5"/>      <add key="垫仓" value="6"/>
在代码里如常访问:

            string key1 = ConfigSettings.ReadSetting("C&F");            Debug.WriteLine("C&F=" + key1);



参考这里:https://www.cnblogs.com/hhzz/p/6592452.html







原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 貔貅摔坏了耳朵怎么办? 貔貅摔坏了一点点怎么办 天猫删评价扣4分怎么办 暴风影音下载电视剧下载不了怎么办 fm2017引援电脑买了怎么办 退休时医保不够二十年怎么办 和的面迟迟不发怎么办 做面条的面发了怎么办 发不起来的面团怎么办 如果婚后买房离婚后财产怎么办 空腹体检前喝水了怎么办 莆田市风俗婴儿死了怎么办后事 上司给你换不好岗位怎么办 领导要把我调走怎么办 美国上庭遇法官退休案子怎么办 夫妻一套房离婚户囗怎么办 正营生不了副团怎么办 浅色衣服被染色了怎么办 解大便解不出来怎么办 强拆挖掘机被村民扣押怎么办 小孩哭的时候接不上气怎么办 昆明市长信箱发不出去怎么办 中国公民在香港想去澳门怎么办 面包车不给贴膜怎么办 在香港海关被扣怎么办 发现被医院骗了怎么办 白皮子科染上血怎么办 宝宝头发里长湿疹怎么办 婴儿头发里长湿疹怎么办 宝宝解小便地方有湿疹怎么办 婴儿湿疹怎么办长在脸上 广州奥龙堡游泳卡过期了怎么办 大学生在学校当兵户口怎么办 茶叶梗枕头太硬怎么办 茶梗枕头太硬怎么办 照片放久了变红怎么办 乳腺萎缩和韧带松弛怎么办 航海王启航服务器爆满怎么办 LOL记分板没了怎么办 辅导孩子做作业没有耐心怎么办 宝宝住院三天回家不吃母乳怎么办