C#中对xml数据的读取和写入

C#中对xml数据的读取和写入:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Xml;
using Newtonsoft.Json;

namespace cashUI.test
{
    class XmlTest
    {

        private static string localPath = System.Environment.CurrentDirectory + @"\test\";
        /*
         * 写入xml
         */
        public void writeXml()
        {
            string path = localPath + "/test.xml";

            XmlDocument docment = new XmlDocument();
            XmlNode node = docment.AppendChild(docment.CreateXmlDeclaration("1.0", "UTF-8", null));

            XmlElement users = docment.CreateElement("Users");//一级节点
            XmlElement user = docment.CreateElement("User");//二级节点

            //创建三级节点
            XmlElement userName = docment.CreateElement("userName");
            userName.InnerText = "root111";
            XmlElement passWord = docment.CreateElement("passWord");
            passWord.InnerText = "123456";

            //三级节点加入到二级节点中
            user.AppendChild(userName);
            user.AppendChild(passWord);

            users.AppendChild(user);
            docment.AppendChild(users);

            docment.Save(path);
        }

        /*
         * 读取修改xml
         */

        public void readXml()
        {
            string path = localPath + "/test.xml";
            XmlDocument docment = new XmlDocument();
            docment.Load(path);

            XmlNode rootNode = docment.SelectSingleNode("Users");
            for (int i = 0; i < rootNode.ChildNodes.Count; i++) {
                if (rootNode.ChildNodes[i].ChildNodes[0].InnerText == "root111") {
                    rootNode.ChildNodes[i].ChildNodes[0].InnerText = "root222";
                    rootNode.ChildNodes[i].ChildNodes[1].InnerText = "654321";
                }
            }
            docment.Save(path);

        }

        /*
         * xml转成json
         * 把xml读取转成对象,把对象转json
         */
        public void xml2json() {
            //1.读取xml的数据
            string path = localPath + "/test.xml";
            XmlDocument docment = new XmlDocument();
            docment.Load(path);
            //string jsonText = JsonConvert.SerializeXmlNode(docment);

            //2.把读取出来的xml数据循环放进key->value字典类型中
            List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();
            XmlNode rootNode = docment.SelectSingleNode("Users");
            for (int i = 0; i < rootNode.ChildNodes.Count; i++)
            {
                Dictionary<string, string> dic = new Dictionary<string, string>();
                dic.Add(rootNode.ChildNodes[i].ChildNodes[0].Name, rootNode.ChildNodes[i].ChildNodes[0].InnerText);
                dic.Add(rootNode.ChildNodes[i].ChildNodes[1].Name, rootNode.ChildNodes[i].ChildNodes[1].InnerText);
                list.Add(dic);
            }
            Dictionary<string, List<Dictionary<string, string>>> dict
                = new Dictionary<string, List<Dictionary<string, string>>>();
            dict.Add("data", list);

            //3.把对象型的数据转json
            string jsonText = JsonConvert.SerializeObject(dict);
            Console.WriteLine(jsonText);

            //return jsonText;
        }


    }
}

 

上一篇:XML的DOM解析常用语法


下一篇:【js】查找某一个id下的某个标签