C#/ASP.NET Xml多级数据读取
<Data>
<Project>
<Item Id="51351132-59a7-4c0b-909d-51b89b1c3159" IsDefault="1" Path="D:\TDDOWNLOAD\Source\Report1.App" />
<Item Id="e6fd198a-753e-42e5-a16c-e20450362795" IsDefault="1" Path="D:\TDDOWNLOAD\Source\Report2.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;
}
其实代码就这些了,但为了拼出这些代码可费了我不少时间。
C#/ASP.NET Xml多级数据读取的更多相关文章
- PHP读取XML文件数据
XML文件 <?xml version="1.0" encoding="UTF-8"?> <node> <student> ...
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据
这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...
- 第一周:读取XML深度数据并将其重建为三维点云
本周主要任务:学习PCL点云库,掌握利用PCL对点云处理的方法 任务时间:2014年9月1日-2014年9月7日 任务完成情况:完成了读取单幅xml深度数据,并重建三维点云并显示 任务涉及基本方法: ...
- XML数据读取方式性能比较(一)
原文:XML数据读取方式性能比较(一) 几个月来,疑被SOA,一直在和XML操作打交道,SQL差不多又忘光了.现在已经知道,至少有四种常用人XML数据操作方式(好像Java差不多),不过还没有实际比较 ...
- 为ASP.NET MVC应用程序读取相关数据
为ASP.NET MVC应用程序读取相关数据 2014-05-08 18:24 by Bce, 299 阅读, 0 评论, 收藏, 编辑 这是微软官方教程Getting Started with En ...
- asp.net接收发送的xml字符串数据
最近研究为新的接口,发现发送的消息的格式为xml类型.之前接口接触的多是接收json类型的数据,可以直接通过Request["Key"]/Request.QueryString[& ...
- spring 框架的xml文件如何读取properties文件数据
spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...
- C# 递归读取XML菜单数据
在博客园注册了有4年了,很遗憾至今仍未发表过博客,趁周末有空发表第一篇博客.小生不才,在此献丑了! 最近在研究一些关于C#的一些技术,纵观之前的开发项目的经验,做系统时显示系统菜单的功能总是喜欢把数据 ...
- C#读取xml节点数据方法小结
本文实例总结了C#读取xml节点数据的方法.分享给大家供大家参考.具体如下: 第一种: 使用XPath XML的路径我配置在web.config 的appSettings节点下 <appSett ...
随机推荐
- 边表+SPFA (使用指针+动态内存)
233 只是我怕忘了怎么写指针操作 所以写一遍指针版的 然而洛谷评测机不给力,400多ms过了数组的,600多ms过指针的... 我想,指针的比数组的理解起来应该容易一点吧 戳我是数组版的,NOIP时 ...
- 咏南WEB开发框架(FOR XE10.1 BERLIN)
咏南WEB开发框架(FOR XE10.1 BERLIN) 1)支持最新的XE10.1 BERLIN开发WEB程序 2)如同开发VCL WIN32程序一样的速度 3)WEB框架通过咏南中间件和数据库打交 ...
- vsftpd移植
1.交叉编译 2.将生成的 vsftpd 复制到目标板 /usr/sbin 目录,vsftpd.conf 复制到目标板 /etc 目录,并添加 vsftpd 为可执行: 3.配置 使用 vi 打开 v ...
- UWP深入学习三:依赖属性、附加属性和数据绑定
Dependency properties overview Custom dependency properties Attached properties overview Custom atta ...
- 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏
第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...
- git -- 如何解决冲突
遇到冲突,首先要编辑冲突文件,可以使用vim或者其他工具,冲突文件变现为: <<<<HEAD 到 ==== :代表本地分支的修改内容 ==== 到 >>>&g ...
- Android横竖屏切换小结
Android横竖屏切换小结 (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com/franksunny/635350788930000000.pdf) And ...
- 黑马程序员——for循环的使用与理解
Console.WriteLine("请输入要打印菱形的行数(不能是偶数)");---------------------- <a href="http://edu ...
- 【Python自动化运维之路Day6】
1.递归思考题,阶乘 使用递归方式(函数)计算: 1*2*3*4*5*6*7*8*9*10的值 def func(num): if num==1: return 1 return num*func(n ...
- EmberJs之Ember-Data
写在前面 最近比较忙,换了新工作还要学习很多全新的技术栈,并给自己找了很多借口来不去坚持写博客.常常具有讽刺意味的是,更多剩下的时间并没有利用而更多的是白白浪费,也许这就是青春吧,挥霍吧,这不是我想要 ...