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(处理文件权限)的更多相关文章

  1. asp.net写入读取xml的方法

    添加命名空间 using System.Xml; 我自己的代码(添加其中的节点) XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(Server.M ...

  2. Android中写入读取XML

    获取XML文件的基本思路是,通过getResources().getXml()获的XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开头还是结尾,是某个标签的开始还是 ...

  3. RSS阅读器(一)——dom4j读取xml(opml)文件

    接触java不久,偶有收获,最近想做一个web版RSS阅读器来锻炼一下.手头有几个从不同版本的foxmail中导出的opml文件,大家应该都知道,opml文件就是xml格式的.那么就先从这里入手,练习 ...

  4. ASP.NET MVC读取XML并使用ViewData显示

    看到网上一个网友问及,无法获取XML某一个节点内容.下面Insus.NET在ASP.NET MVC环境下实现它. 先把XML文件放入App_Data目录,当然你可以放在自建目录中.打开看看它有几层,几 ...

  5. asp.net core读取appsetting.json文件

    1.在Startup.cs文件中注入,ConfigureServices方法 services.Configure<MyConfig>(Configuration.GetSection(& ...

  6. 读取xml格式文件

    $v = [xml]get-content d:\vmconfig.xml $v.Domain.Computer.Name =========================== $v.GetElem ...

  7. ASP.NET写入和读取xml文件

    xml是一种可扩展标记语言,在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 ...

  8. 读取xml文件,写入excel

    在上一篇 Python写xml文件已经将所有订单写入xml文件,这一篇我们把xml文件中的内容读出来,写入excel文件. 输入xml格式: <?xml version="1.0&qu ...

  9. C#读取xml文件写入到TreeView中

    开发过程中我们会遇到一些读取xml文件的时候,下面是我学习的整理. 用XmlDocument读取加载 XmlDocument doc = new XmlDocument(); doc.Load(&qu ...

随机推荐

  1. Ubuntu下编译opencv 和Ubuntu使用ffmpeg实现音频、视频的抽取

    一.使用Ubuntu编译opencv (前提是Ubuntu内已经正确配置了opencv,个人采用opencv3.2) g++ 1.cpp -o 1 `pkg-config --cflags --lib ...

  2. MYSQL数据类型 表基本操作 表记录增删改 单表查询

    一.数据类型 常用的数据类型如下: 整数:int,bit 小数:decimal 字符串:varchar,char 日期时间: date, time, datetime 枚举类型(enum) 特别说明的 ...

  3. 安装nvm之后node不可用,“node”不是内部或外部命令,也不是可运行的程序或批处理文件(ng)

    安装nvm: 1.下载nvm压缩包地址:https://github.com/coreybutler/nvm-windows/releases 2.下载后解压在目标文件夹中,我这里是H:\applic ...

  4. JQuery-学习。

    jQuery是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作.由约翰·雷西格(John Resig)在2006年1月的BarCamp NYC上发布第一个版本.目前是 ...

  5. 4.Servlet过滤器

    1.Servlet 编写过滤器 Servlet 过滤器是可用于 Servlet 编程的 Java 类,有以下目的: 在客户端的请求访问后端资源之前,拦截这些请求. 在服务器的响应发送回客户端之前,处理 ...

  6. Hibernate的increment主键生成机制带来的问题

    最近给学校做的系统,总出现主键插入冲突的问题.主键是通过hibernate自动生成的,设置increment属性,总出现Duplicate entry的错误.搜到解决方案如下: 在网站运行在apach ...

  7. JSP九大内置对象与Servlet的对应关系

    JSP对象                              Servlet中怎样获得 request service方法中的request参数 response service方法中的res ...

  8. 第四章 数据更新 4-1 数据的插入(INSERT 语句的使用方法)

    一.什么是INSERT 用来插入数据的SQL就是INSERT语句.   二.INSERT 语句的基本语法. 列清单 值清单 列清单和值清单的列数必须保持一致,如果不一致会出错.   原则上,执行一次I ...

  9. 模仿SDWebImage实现异步加载图片

    模仿SDWebImage实现异步加载图片 SDWebImage想必大家都不陌生吧,要实现它的图片异步加载功能这个还是很简单的. 注意:此处我只实现了异步加载图片,并没有将文件缓存到本地的打算哦:) 源 ...

  10. oracle 复制表结构 复制表数据 sql 语句

    1. 复制表结构及其数据: create table table_name_new as select * from table_name_old 2. 只复制表结构: create table ta ...