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 = 19, Email = "[email protected]" });
            list.Add(new Person() { Name = "李四", Age = 29, Email = "[email protected]" });
            list.Add(new Person() { Name = "王五", Age = 39, Email = "[email protected]" });
            list.Add(new Person() { Name = "赵六", Age = 9, Email = "[email protected]" });

            //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 = 0; i < list.Count; i++)
            {
                //4.1创建一个Person元素
                XmlElement xmlPerson = xDoc.CreateElement("Person");
                XmlAttribute xmlAttrId = xDoc.CreateAttribute("id");
                xmlAttrId.Value = (i + 1).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;
            }
        }
时间: 2024-10-10 04:19:52

Asp.Net写入读取Xml(处理文件权限)的相关文章

asp.net简单读取xml文件信息

xml文件格式如下:     <?xml   version="1.0"   encoding="utf-8"?>         <userdata   createuser="false">         <dataconnection>             <server>localhost</server>             <uid>sa</uid

Android中写入读取XML

获取XML文件的基本思路是,通过getResources().getXml()获的XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开头还是结尾,是某个标签的开始还是结尾,并通过一些获取属性的方法来遍历XML文件,从而访问XML文件的内容,下面是一个访问XML文件内容的例子,并将内容更显示在一个TextView上 数据写入xml: ReadXMLTest.java [java] view plaincopy //xml数据生成 private String Wr

读取xml格式文件

$v = [xml]get-content d:\vmconfig.xml $v.Domain.Computer.Name vmconfig.xml内容: <?xml version="1.0" encoding="UTF-8"?><Domain><Computer><Name>stcmm-vm-s01</Name><IpAddress>192.168.0.2</IpAddress>

读取xml数据文件(转)

java里有个properties类  可以用它来读取XML文件   xml文件:  Xml代码 <?xml version="1.0" encoding="GB2312"?>  <RESULT>  <VALUE>  <NO>A1234</NO>  <ADDR>河南省郑州市</ADDR>  </VALUE>  <VALUE>  <NO>B1234&

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

看到网页一个网友问及,无法获取XML某一个节点内容.下面Insus.NET在ASP.NET MVC环境下实现它. 先把XML文件放入App_Data目录,当然你可以放在自建目录中.打开看看它有几层,几节数据: 从蓝色标记1至4来看,它有四节数据.它由ProductKeyID和HardwareHash字段组成.我需要在ASP.NET MVC的model创建model: 接下来,我们创建一个Entity,是为了处理Xml文档,并获取数据: 在控制器中,创建操作,在操作中,指定获取哪一个节点数据: 有

读取xml节点值生成一个实体类,读取xml所有节点值,读取所有xml所有节点名称

public partial class WebFormClassByEntity : System.Web.UI.Page    {        List<string> list = new List<string>();//存放所有节点名称        protected void Page_Load(object sender, EventArgs e)        {            //读取xml的文件路径            string filePah

ASP.NET写入和读取xml文件

xml是一种可扩展标记语言,在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据.是Internet环境中跨平台的.依赖于内容的技术,也是当今处理分布式结构信息的有效工具. 现在演示一下在asp.net里如何操作读写xml文件 1.新建一个web窗体WebForm1.aspx和一

asp.net 上传XML,txt 直接读取文件内容

if (GetUploadFileContent.PostedFile.InputStream.Length < 1) { Msg.Text = "请选择文件";return; } string FileName = GetUploadFileContent.FileName;//上传文件文件名 string FilePath = GetUploadFileContent.PostedFile.FileName;//上传文件完整路径+文件名string fileExtName =

Asp.Net 读取xml文件中Key的值,并且过滤掉注释内容代码

/// <summary> /// 读取配置文件keys /// </summary> /// <returns></returns> public string _GetKeys() { string filename = Server.MapPath("/") + @"web.config"; XmlDocument xmldoc = new XmlDocument(); XmlReaderSettings set