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 ...
随机推荐
- elixir 表单 map
键-值对 iex(13)> map = %{:a => 1, 2 => :b}%{2 => :b, :a => 1}iex(14)> map[:a]1iex(15) ...
- android中的ellipsize
textview中有个内容过长加省略号的属性,即ellipsize 用法如下: 在xml中 android:ellipsize = "end" 省略号在结尾 android:ell ...
- Pwn with File结构体(四)
前言 前面几篇文章说道,glibc 2.24 对 vtable 做了检测,导致我们不能通过伪造 vtable 来执行代码.今天逛 twitter 时看到了一篇通过绕过 对vtable 的检测 来执行代 ...
- 实验二:klee处理未建模函数和处理error的方式
首先,能够分析klee源码固然重要.但是目前尚未到那个地步.我按照我的过程,记录和分析我所做的实验. 结论性内容是: 1.klee处理printf传入符号值的情形时,报为error,不会将符号值具体化 ...
- 使用 Azure CLI 创建和管理 Linux VM
Azure 虚拟机提供完全可配置的灵活计算环境. 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小.选择 VM 映像和部署 VM. 你将学习如何执行以下操作: 创建并连接到 VM 选 ...
- 解析UIControl
解析UIControl 从下图可以看出,UIControl继承自UIView,添加了响应事件功能. UIButton之所以能响应各种各样的事件是因为继承自UIControl 使用UIControl可以 ...
- DPM恢复点和保持期、常见问题排除指南
“恢复点计划”确定应为该保护组创建多少个恢复点. 对于文件保护,选择希望创建恢复点的日期和时间. 对于支持增量备份的应用程序数据保护,同步频率决定了恢复点计划. 对于不支持增量备份的应用程序数据保护, ...
- Linux strace命令详解
Linux抓取TCP的命令: tcpdump ps -ef 参数命令详解: Linux下一切皆文件,我们打开一个socket,实际上也是打开了一个文件 我们打开一个网卡,实际上也是调用Linux系统的 ...
- java 规范
https://blog.csdn.net/mengxiangsun/article/details/79020226
- 摄像机内参相关(3ds max)
一般的原理参考:http://ksimek.github.io/2012/08/13/introduction/ 对于3ds max建模时使用的target camera,如果想得到它的内外参,可以利 ...