zoukankan      html  css  js  c++  java
  • C#/ASP.NET Xml多级数据读取

    <Data>
      <Project>
        <Item Id="51351132-59a7-4c0b-909d-51b89b1c3159" IsDefault="1" Path="D:TDDOWNLOADSourceReport1.App" />
        <Item Id="e6fd198a-753e-42e5-a16c-e20450362795" IsDefault="1" Path="D:TDDOWNLOADSourceReport2.App" />
      </Project>
      <AppSettings>
        <Item Key="conn" Value="Data Source=192.168.2.227;Initial Catalog=master;User ID=sa;pwd=sa" />
      </AppSettings>
    </Data>


    由于习惯的关系,所以喜欢把数据存成一行的格式,一目了然。

    对于多行的格式有点排斥,如果数据少还好,如果多了一页就只能看到几条数据。

    或则来个人告诉我那样的格式有比这种好的地方(纯讨论)


    以上是Xml的数据格式,这里也顺便提下多级的新增方式。

            /// <summary>
            /// 新增一条地址数据
            /// </summary>
            /// <param name="entity">项目地址信息</param>
            public void Create(Project entity)
            {
                //新增一条日志记录
                var xmlDoc = new XmlDocument();
                xmlDoc.Load(FileName);
                var data = xmlDoc.SelectSingleNode("Data");//找到根节点
    
                var project = data.SelectSingleNode("Project");//找到子节点 Project
                var item = xmlDoc.CreateElement("Item");//创建子节点 Item
                
                item.SetAttribute("Id", entity.Id);
                item.SetAttribute("IsDefault", entity.IsDefault);
                item.SetAttribute("Path", entity.Path);
    
                project.AppendChild(item);//子项添加到 Project 节点中
                data.AppendChild(project);
                xmlDoc.Save(FileName);//保存
            }

    当然新增的前提是Xml格式已经存在了。

    下面则是创建文件和Xml的格式。


            /// <summary>
            /// 文件夹或文件不存在则创建
            /// </summary>
            private void CreateFile()
            {
                var directoryInfo = new DirectoryInfo(FolderPath);//获取文件路径信息
    
                if (!directoryInfo.Exists) directoryInfo.Create();//如果文件夹不存在
    
                if (!File.Exists(FileName))
                {
                    #region 创建默认Xml数据
    
                    //如果文件不存在则创建
                    File.Create(FileName).Close();
    
                    var xmlDoc = new XmlDocument();
                    var data = xmlDoc.CreateElement("Data");//创建根节点
                    
                    var appSettings = xmlDoc.CreateElement("AppSettings");//连接字符串 节点
                    var project = xmlDoc.CreateElement("Project");//项目地址 节点
                    data.AppendChild(appSettings);
                    data.AppendChild(project);
    
                    xmlDoc.AppendChild(data);
                    xmlDoc.Save(FileName);//保存
    
                    #endregion
                }
            }


    这里可以新增几条数据待会儿用来测试读取

    如果在已知Xml结构的情况下那么可以直接找到相对应的节点下的数据。


            /// <summary>
            /// 获取所有项目地址数据
            /// </summary>
            /// <returns></returns>
            public IList<Project> GetAllProject()
            {
                var list = new List<Project>();
    
                var xmlDoc = new XmlDocument();
                xmlDoc.Load(FileName);
                var xmlList = xmlDoc.SelectSingleNode("Data/Project").ChildNodes;
    
                foreach (XmlNode node in xmlList)
                {
                    var entity = new Project
                    {
                        Id = node.Attributes["Id"].Value,
                        IsDefault = node.Attributes["IsDefault"].Value,
                        Path = node.Attributes["Path"].Value,
                    };
                    list.Add(entity);
                }
                return list;
            }

    其实代码就这些了,但为了拼出这些代码可费了我不少时间。

  • 相关阅读:
    魔改版BBR
    termux 开启 sshd
    Basic berkeley socket functions
    mosh
    XOR 加密
    指定so动态链接库连接器
    UTF8 UTF16 之间的互相转换
    MySQL C API概述
    C JAVA你可能不知道的那些编程细节
    虚拟内存
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3212568.html
Copyright © 2011-2022 走看看