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 ...
随机推荐
- 自定义标签+阻尼动画+圆角图片+titleBar随滑动渐隐和显示
写这个小Demo,也是因为刚好手里没什么事然后看到很多朋友还在好奇这个阻尼界面效果,还有自定义标签,其实这个标签因为现在Google已经有推出更好使用的东西可以替代,那就是“FlexboxLayout ...
- fuzz系列之afl
afl 实战 前言 像 libFuzzer, afl 这类 fuzz 对于 从文件 或者 标准输入 获取输入的程序都能进行很好的 fuzz, 但是对于基于网络的程序来说就不是那么方便了. 这篇文章介绍 ...
- Apache配置tomcat集群
APACHE 2.2.9+TOMCAT6.0配置负载均衡 目标: 使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1. Apache 做为 HttpSe ...
- 润乾报表与DERBY数据库的创建连接详解
1. 问题概述 1.Derby数据库的创建过程 2.润乾报表连接Derby数据库展现数据 概述: Derby是Apache Software Foundation (ASF)的一个的孵化器项目. ...
- GIT速成
安装工具与使用工具: GIT工具 :https://www.git-scm.com/download/ WINGDOWS图形界面工具:https://download.tortoisegit.org/ ...
- LOCAL_LISTENER 引起的错误
1. 如果你的LOCAL_LISTENER 指定的是一个别名 比如L2 *.local_listener='L2' 启动实例的时候 会先到 tnsnames.ora 文件里取查找定义名为L2的TNS服 ...
- Nginx 配置多站点vhost
假设你想在Linux Nginx中用不同的域名访问不同的目录,这时就要配置多个vhost,具体配置如下,假设网站根目录设定在/var/www/ 1.在/var/www/下新建两个目录 /var/www ...
- nginx 的socket 选项处理--TCP_DEFER_ACCEPT
在nginx listen配置项的说明中有一个选项: deferred -- indicates to use that postponed accept(2) on Linux with. the ...
- CentOS6.4 下安装 Apache2.4.16
1.准备工作 1.1.yum安装部分工具 1)yum -y install vim 2)yum -y install wget 3)yum -y install gcc 4)yum -y instal ...
- Oracle案例11——Oracle表空间数据库文件收缩
我们经常会遇到数据库磁盘空间爆满的问题,或由于归档日志突增.或由于数据文件过多.大导致磁盘使用紧俏.这里主要说的场景是磁盘空间本身很大,但表空间对应的数据文件初始化的时候就直接顶满了磁盘空间,导致经常 ...