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. 或许你并不需要jQuery

    此文为翻译文章,原文链接:you might not need jquery jQuery 和它的相关插件都是很强大的,使用它们让我们的应用开发变得简单.如果你正在开发另一个库,请花点时间思考以下,你 ...

  2. Spring Boot—10ModelAndView、Model,以及@ModelAttribute注解

    package com.sample.smartmap.controller; import org.springframework.beans.factory.annotation.Autowire ...

  3. 风云2号云图Mosaic Dataset处理

    # ---------------------------------------------------------------------------# -*- coding: utf-8 -*- ...

  4. 多个raq导出一个excel2007中

     需求描述:         客户以前通过润乾API把多个raq模板数据来导出到一个excel文件中,由于现在数据量过大一个raq数据就超过了65535,原来的2003接口已经满足不了现在的需求, ...

  5. Weblogic集群配置__部署润乾应用

     ◆环境: Windows xp Weblogic:wls1031_ccjk_win32.rar(内部下载:\\192.168.0.38\SystemInstaller\4WebServer\we ...

  6. Memory map of an object array

    Student类: package com.itheima; /* * 自动生成构造方法: * 代码区域右键 -- Source -- Generate Constructors from Super ...

  7. Vue 框架-04-计算属性

    Vue 框架-04-计算属性 计算属性是什么? 大家可以去看官网解释:计算属性和侦听器 今天的第一个小实例: 为啥先放折磨一个实例,之前数据绑定的就已经可以实现了,看起来那么简单,就是为了告诉大家,当 ...

  8. vmware centos 安装

    一.分区 一块硬盘主分区+扩展分区最多只能有4个,其中扩展分区最多只能有1个.扩展分区不能写入数据,只能包含逻辑分区.这些都不是linux的限制,而是硬盘结构的限制. 分区号 第一种分区法: |--- ...

  9. 项目maven update 后启动项目出现导常:org.springframework.web.context.ContextLoaderListener

    导常:org.springframework.web.context.ContextLoaderListener 1. 右键单击工程项目 ->点击 properties2. 选择 Deploym ...

  10. Cent OS home下中文目录改成英文目录

    如果安装了中文版的Cent OS之后,root目录和home目录下会出现中文的路径名,如“桌面”.“文档”.“图片”.“公共的”.“下载”.“音乐”.“视频”等目录,这样在命令行上操作十分的不方便,需 ...