Asp.Net写入读取Xml(处理文件权限)
1,网上关于读取写入Xml的博客比较多,参考了发现提到Xml文件权限的博客比较少。因为在开发中我发现,如果文件存于一些没有权限的路径,代码是访问不到该文件,页面会报错提示403,Forbidden。意思是禁止,也就是没有权限。需要用代码给文件EveryOne赋予完全控制权限。希望我的博客能帮助一些在权限方面遇到问题的朋友。
2,判断文件文件夹和文件是否存在(写入时会自动创建Xml,但是如果没有权限,会创建失败,所以我觉得先用FileStream把文件创建出来比较保险);
- public string CreateFolder()
- {
- string fileName = "myXml";
- string folderPath = "C:\\Configurations";
- string filePath = @"C:\\Configurations\" + fileName + ".xml";
- if (!Directory.Exists(folderPath))
- {
- Directory.CreateDirectory(folderPath);
- //给文件夹Everyone赋完全控制权限
- DirectorySecurity folderSec = new DirectorySecurity();
- folderSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
- System.IO.Directory.SetAccessControl(folderPath, folderSec);
- CreateFile(filePath);
- }
- else
- {
- CreateFile(filePath);
- }
- return filePath;
- }
- public void CreateFile(string filePath)
- {
- if (!File.Exists(filePath))
- {
- using (FileStream fs1 = new FileStream(filePath, FileMode.Create, FileAccess.Write))
- {
- //给Xml文件EveryOne赋完全控制权限
- DirectorySecurity fSec = new DirectorySecurity();
- fSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
- System.IO.Directory.SetAccessControl(filePath, fSec);
- }
- }
- }
3,文件夹和文件都创建出来以后就是写入了。
(1)Xml有几个重要的对象。、|XmlDocument,Xml文档对象|XmlDeclaration,Xml文档定义对象|XmlElement,Xml节点对象|XmlAttrbute,Xml节点属性对象|
了解了这几个对象,开发起来就比较顺了。
- List<Person> list = new List<Person>();
- list.Add(new Person() { Name = "张三", Age = , Email = "hl@yahoo.com" });
- list.Add(new Person() { Name = "李四", Age = , Email = "xzl@yahoo.com" });
- list.Add(new Person() { Name = "王五", Age = , Email = "hhw@yahoo.com" });
- list.Add(new Person() { Name = "赵六", Age = , Email = "ys@yahoo.com" });
- //1.创建一个Dom对象
- XmlDocument xDoc = new XmlDocument();
- //2.编写文档定义
- XmlDeclaration xmlDec = xDoc.CreateXmlDeclaration("1.0", "utf-8", null);
- xDoc.AppendChild(xmlDec);
- //3.编写一个根节点
- XmlElement xmlRoot = xDoc.CreateElement("List");
- xDoc.AppendChild(xmlRoot);
- //4.循环创建Person节点
- for (int i = ; i < list.Count; i++)
- {
- //4.1创建一个Person元素
- XmlElement xmlPerson = xDoc.CreateElement("Person");
- XmlAttribute xmlAttrId = xDoc.CreateAttribute("id");
- xmlAttrId.Value = (i + ).ToString();
- //将属性增加到Person节点中
- xmlPerson.Attributes.Append(xmlAttrId);
- //4.2在这里向Person节点下增加子节点
- //创建Name
- XmlElement xmlName = xDoc.CreateElement("Name");
- xmlName.InnerText = list[i].Name;
- xmlPerson.AppendChild(xmlName);
- //创建Age
- XmlElement xmlAge = xDoc.CreateElement("Age");
- xmlAge.InnerText = list[i].Age.ToString();
- xmlPerson.AppendChild(xmlAge);
- //创建一个Email节点
- XmlElement xmlEmail = xDoc.CreateElement("Email");
- xmlEmail.InnerText = list[i].Email;
- xmlPerson.AppendChild(xmlEmail);
- //最后把Person加到根节点下
- xmlRoot.AppendChild(xmlPerson);
- }
- //5.将xmlDocument对象写入到文件中
- xDoc.Save(@"C:\Configurations\myXml.xml");
4,Xml读取
- public DataTable GetDataFromXml()
- {
- string fileName = "myXml";
- string filePath = @"C:\\Configurations\" + fileName + ".xml";
- DataTable dt = this.BuildDataTable();
- try
- {
- XmlDocument document = new XmlDocument();
- document.Load(filePath);
- XmlElement rootElement = document.DocumentElement;
- dt = LoadToTreeByXmlDocument(rootElement, dt);
- return dt;
- }
- catch
- {
- return dt;
- }
- }
- private DataTable LoadToTreeByXmlDocument(XmlElement rootElement, DataTable dt)
- {
- try
- {
- foreach (XmlNode node in rootElement.ChildNodes)
- {
- if (node.NodeType == XmlNodeType.Element)
- {
- DataRow dr = dt.NewRow();
- foreach (DataColumn dc in dt.Columns)
- {
- dr[dc.ColumnName] = node.Attributes[dc.ColumnName] == null ? "" : node.Attributes[dc.ColumnName].Value;
- }
- dt.Rows.Add(dr);
- //遍历二级节点
- foreach (XmlNode subNode in node.ChildNodes)
- {
- if (subNode.NodeType == XmlNodeType.Element)
- {
- DataRow subDr = dt.NewRow();
- foreach (DataColumn dc in dt.Columns)
- {
- subDr[dc.ColumnName] = subNode.Attributes[dc.ColumnName] == null ? "" : subNode.Attributes[dc.ColumnName].Value;
- }
- dt.Rows.Add(subDr);
- }
- }
- }
- }
- return dt;
- }
- catch
- {
- return dt;
- }
- }
Asp.Net写入读取Xml(处理文件权限)的更多相关文章
- asp.net写入读取xml的方法
添加命名空间 using System.Xml; 我自己的代码(添加其中的节点) XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(Server.M ...
- Android中写入读取XML
获取XML文件的基本思路是,通过getResources().getXml()获的XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开头还是结尾,是某个标签的开始还是 ...
- RSS阅读器(一)——dom4j读取xml(opml)文件
接触java不久,偶有收获,最近想做一个web版RSS阅读器来锻炼一下.手头有几个从不同版本的foxmail中导出的opml文件,大家应该都知道,opml文件就是xml格式的.那么就先从这里入手,练习 ...
- ASP.NET MVC读取XML并使用ViewData显示
看到网上一个网友问及,无法获取XML某一个节点内容.下面Insus.NET在ASP.NET MVC环境下实现它. 先把XML文件放入App_Data目录,当然你可以放在自建目录中.打开看看它有几层,几 ...
- asp.net core读取appsetting.json文件
1.在Startup.cs文件中注入,ConfigureServices方法 services.Configure<MyConfig>(Configuration.GetSection(& ...
- 读取xml格式文件
$v = [xml]get-content d:\vmconfig.xml $v.Domain.Computer.Name =========================== $v.GetElem ...
- ASP.NET写入和读取xml文件
xml是一种可扩展标记语言,在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 ...
- 读取xml文件,写入excel
在上一篇 Python写xml文件已经将所有订单写入xml文件,这一篇我们把xml文件中的内容读出来,写入excel文件. 输入xml格式: <?xml version="1.0&qu ...
- C#读取xml文件写入到TreeView中
开发过程中我们会遇到一些读取xml文件的时候,下面是我学习的整理. 用XmlDocument读取加载 XmlDocument doc = new XmlDocument(); doc.Load(&qu ...
随机推荐
- PHP链接mysql 出现:由于目标计算机积极拒绝,无法连接
1.PHP链接mysql 出现:由于目标计算机积极拒绝,无法连接 2.原因是mysql服务没有启动,图标呈现红色 3.启动服务即可,打开cmd,输入net start mysql即可 4.启动后,图标 ...
- 如何配置Portal 基于AD的单点登录配置
Portal for ArcGIS支持两种类型的账户,分别是: 1.系统内置账户. 2.外部系统的企业账户. 这两种不同的账号分别支持多种身份认证方式: 账号类型 认证方式 细分认证方式 系统内置账号 ...
- 自定义圆角ImageView控件
这个就当工具类用吧,因为直接是继承的ImageView.所以也具备了ImageView所有的特点,不同的是,可以自动裁剪成圆角图片.看效果吧. 效果还是不错的.使用方式: 直接在配置中添加依赖 com ...
- ES6入门——类的概念
1.Class的基本用法 概述 JavaScript语言的传统方式是通过构造函数,定义并生成新对象.这种写法和传统的面向对象语言差异很大,下面是一个例子: function Point(x, y) { ...
- qt cmake
写在前面的话:强烈建议优先阅读Qt官网文档对cmake的使用介绍——CMake Manual 前言我去年用clion写Qt的时候,找了很多教程,也没有什么让我觉得很满意的.后来自己摸索,构建了一个我自 ...
- Charles基础
一.Charles 监控其他设备连接方式 1.XP系统:控制面板——>Internet选项——>连接(tab)——>局域网(LAN)设置——>局域网设置——>代理服务器, ...
- vmware虚拟机挂载Windows磁盘的两种方法
第一种 vmware虚拟机通过ntfs-3g挂接windows盘 1.共享windows盘虚拟机设置——>添加硬盘——>选择IDE——>使用物理磁盘——>选择本地盘(单分区)— ...
- zTree设置异步加载后展开
//不能直接配置展开属性 因为没有数据,需要添加回调函数,异步加载成功展开 callback: { onAsyncSuccess: zTreeOnAsyncSuccess } //异步加载成功回调函数 ...
- KT_登录_流程图
一.需求 关于系统登录功能,需求如下:1.登录需要输入用户名.密码2.如果连续密码输入错误4次,则自动锁定账号5分钟(也就是说5分钟之内不能再登录) 请根据以上需求,画一个登录操作流程图 二.绘图 版 ...
- 关于解决sql2012编辑器对象名无效问题
出现以下情况: 解决办法: 选择“编辑”——“Intellisense”——“刷新本地缓存” 或者按Ctrl+Shift+R组合键