<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>
因为习惯的关系,因此喜欢把数据存成一行的格式,一目了然。html
对于多行的格式有点排斥,若是数据少还好,若是多了一页就只能看到几条数据。node
或则来我的告诉我那样的格式有比这种好的地方(纯讨论)app
以上是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的格式。code
/// <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
若是在已知Xml结构的状况下那么能够直接找到相对应的节点下的数据。htm
/// <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; }
其实代码就这些了,但为了拼出这些代码可费了我很多时间。 字符串