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;
            }

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

  • 相关阅读:
    《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
    .NET Core中文分词组件jieba.NET Core
    .NET Core 2.0及.NET Standard 2.0
    Visual Studio 2017 通过SSH 调试Linux 上.NET Core
    Visual Studio 2017 ASP.NET Core开发
    Visual Studio 2017正式版离线安装及介绍
    在.NET Core 上运行的 WordPress
    IT人员如何开好站立会议
    puppeteer(二)操作实例——新Web自动化工具更轻巧更简单
    puppeteer(一)环境搭建——新Web自动化工具(同selenium)
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3212568.html
Copyright © 2011-2022 走看看