1. <Data>
  2. <Project>
  3. <Item Id="51351132-59a7-4c0b-909d-51b89b1c3159" IsDefault="1" Path="D:\TDDOWNLOAD\Source\Report1.App" />
  4. <Item Id="e6fd198a-753e-42e5-a16c-e20450362795" IsDefault="1" Path="D:\TDDOWNLOAD\Source\Report2.App" />
  5. </Project>
  6. <AppSettings>
  7. <Item Key="conn" Value="Data Source=192.168.2.227;Initial Catalog=master;User ID=sa;pwd=sa" />
  8. </AppSettings>
  9. </Data>

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

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

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

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

  1. /// <summary>
  2. /// 新增一条地址数据
  3. /// </summary>
  4. /// <param name="entity">项目地址信息</param>
  5. public void Create(Project entity)
  6. {
  7. //新增一条日志记录
  8. var xmlDoc = new XmlDocument();
  9. xmlDoc.Load(FileName);
  10. var data = xmlDoc.SelectSingleNode("Data");//找到根节点
  11.  
  12. var project = data.SelectSingleNode("Project");//找到子节点 Project
  13. var item = xmlDoc.CreateElement("Item");//创建子节点 Item
  14.  
  15. item.SetAttribute("Id", entity.Id);
  16. item.SetAttribute("IsDefault", entity.IsDefault);
  17. item.SetAttribute("Path", entity.Path);
  18.  
  19. project.AppendChild(item);//子项添加到 Project 节点中
  20. data.AppendChild(project);
  21. xmlDoc.Save(FileName);//保存
  22. }

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

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

  1. /// <summary>
  2. /// 文件夹或文件不存在则创建
  3. /// </summary>
  4. private void CreateFile()
  5. {
  6. var directoryInfo = new DirectoryInfo(FolderPath);//获取文件路径信息
  7.  
  8. if (!directoryInfo.Exists) directoryInfo.Create();//如果文件夹不存在
  9.  
  10. if (!File.Exists(FileName))
  11. {
  12. #region 创建默认Xml数据
  13.  
  14. //如果文件不存在则创建
  15. File.Create(FileName).Close();
  16.  
  17. var xmlDoc = new XmlDocument();
  18. var data = xmlDoc.CreateElement("Data");//创建根节点
  19.  
  20. var appSettings = xmlDoc.CreateElement("AppSettings");//连接字符串 节点
  21. var project = xmlDoc.CreateElement("Project");//项目地址 节点
  22. data.AppendChild(appSettings);
  23. data.AppendChild(project);
  24.  
  25. xmlDoc.AppendChild(data);
  26. xmlDoc.Save(FileName);//保存
  27.  
  28. #endregion
  29. }
  30. }

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

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

  1. /// <summary>
  2. /// 获取所有项目地址数据
  3. /// </summary>
  4. /// <returns></returns>
  5. public IList<Project> GetAllProject()
  6. {
  7. var list = new List<Project>();
  8.  
  9. var xmlDoc = new XmlDocument();
  10. xmlDoc.Load(FileName);
  11. var xmlList = xmlDoc.SelectSingleNode("Data/Project").ChildNodes;
  12.  
  13. foreach (XmlNode node in xmlList)
  14. {
  15. var entity = new Project
  16. {
  17. Id = node.Attributes["Id"].Value,
  18. IsDefault = node.Attributes["IsDefault"].Value,
  19. Path = node.Attributes["Path"].Value,
  20. };
  21. list.Add(entity);
  22. }
  23. return list;
  24. }

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

C#/ASP.NET Xml多级数据读取的更多相关文章

  1. PHP读取XML文件数据

    XML文件 <?xml version="1.0" encoding="UTF-8"?> <node> <student> ...

  2. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...

  3. 第一周:读取XML深度数据并将其重建为三维点云

    本周主要任务:学习PCL点云库,掌握利用PCL对点云处理的方法 任务时间:2014年9月1日-2014年9月7日 任务完成情况:完成了读取单幅xml深度数据,并重建三维点云并显示 任务涉及基本方法: ...

  4. XML数据读取方式性能比较(一)

    原文:XML数据读取方式性能比较(一) 几个月来,疑被SOA,一直在和XML操作打交道,SQL差不多又忘光了.现在已经知道,至少有四种常用人XML数据操作方式(好像Java差不多),不过还没有实际比较 ...

  5. 为ASP.NET MVC应用程序读取相关数据

    为ASP.NET MVC应用程序读取相关数据 2014-05-08 18:24 by Bce, 299 阅读, 0 评论, 收藏, 编辑 这是微软官方教程Getting Started with En ...

  6. asp.net接收发送的xml字符串数据

    最近研究为新的接口,发现发送的消息的格式为xml类型.之前接口接触的多是接收json类型的数据,可以直接通过Request["Key"]/Request.QueryString[& ...

  7. spring 框架的xml文件如何读取properties文件数据

    spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...

  8. C# 递归读取XML菜单数据

    在博客园注册了有4年了,很遗憾至今仍未发表过博客,趁周末有空发表第一篇博客.小生不才,在此献丑了! 最近在研究一些关于C#的一些技术,纵观之前的开发项目的经验,做系统时显示系统菜单的功能总是喜欢把数据 ...

  9. C#读取xml节点数据方法小结

    本文实例总结了C#读取xml节点数据的方法.分享给大家供大家参考.具体如下: 第一种: 使用XPath XML的路径我配置在web.config 的appSettings节点下 <appSett ...

随机推荐

  1. java内存分析

    链接:http://blog.csdn.net/chana1101/article/details/5632393

  2. Matlab学习(一):数字图像处理大作业用到的函数

    1.dlmread——将以 ASCII 码分隔的数值数据读入到矩阵中 dt = dlmread(,); dt = dt(:,); save('data2.txt','dt','-ascii'); 2. ...

  3. DNS劫持和DNS污染的区别

    我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址.常用的手段有:DNS劫持和DNS污染. 什么是DNS劫持 DNS劫持就是通过劫 ...

  4. Eclipse 3.5使用dropins的插件安装方式

    以前安装Eclipse插件有两种方式 1 直接copy插件到features/plugins目录 2 在links目录下创建链接文件. 而 Eclipse 3.5又推出另一种新的安装途径, 更加灵活. ...

  5. Centos7 安装MPlayer过程详解

    使用自带的totem基本上都无法播放视频,各种格式都不支持,令人无语.想到了MPlayer,为了看片,决定编译安装,过程真的是折腾.如图是自带的Totem播放提示,安装了解码还是无法播放,反正要找其他 ...

  6. VS2013使用rtklib中需要注意的一些问题(编译)

    最近因为项目需要需要对rtcm数据进行解码,rtklib提供了很多底层的函数,准备直接输出标准DLL的方式供C#调用.下面把项目中引用rtklib源码需要注意的地方记录下. 1. 首先在vs2013中 ...

  7. UWP深入学习三:依赖属性、附加属性和数据绑定

    Dependency properties overview Custom dependency properties Attached properties overview Custom atta ...

  8. (转).NET 4.5中使用Task.Run和Parallel.For()实现的C# Winform多线程任务及跨线程更新UI控件综合实例

    http://2sharings.com/2014/net-4-5-task-run-parallel-for-winform-cross-multiple-threads-update-ui-dem ...

  9. 斯坦福第十二课:支持向量机(Support Vector Machines)

    12.1  优化目标 12.2  大边界的直观理解 12.3  数学背后的大边界分类(可选) 12.4  核函数 1 12.5  核函数 2 12.6  使用支持向量机 12.1  优化目标 到目前为 ...

  10. java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)

    JAVA里面的程序运行流程分三大类: 1,顺序结构:顺序结构就是依次执行每一行代码 2,分支结构:分支结构就是按不同的条件进行分支 3,循环结构:一段代码依条件进行循环执行. 其中,分支结构有两大类: ...