ASP.NET MVC创建XML文件并实现元素增删改

如果创建如下的XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Students>
  <Student Id="1">
    <Name>darren</Name>
  </Student>
</Students>

创建XML文件

在HomeController中,在根目录下创建new.xml文件:

        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult AddXml()
        {
            string path = Server.MapPath("~/new.xml");
            XDocument doc = new XDocument(
                    new XDeclaration("1.0","utf-8","yes"),
                    new XElement("Students",new XElement("Student",
                            new XAttribute("Id","1"),
                            new XElement("Name","darren")
                        ))
                );
            doc.Save(path);
            return Json(new {msg = true}, JsonRequestBehavior.AllowGet);
        }

在Index.cshtml中通过异步请求:

@model IEnumerable<MvcApplication1.Models.Student>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

<input type="button" value="创建XML" id="create"/>

@section scripts
{
    <script type="text/javascript">
        $(function() {
            $('#create').on('click', function() {
                $.ajax({
                    url: '@Url.Action("AddXml", "Home")',
                    dataType: 'json',
                    data: {},
                    type: 'POST',
                    success: function(data) {
                        if (data.msg) {
                            alert('创建成功');
                        }
                    }
                });
            });
        });
    </script>
}

显示XML文件元素

修改HomeController中的Index方法为:

        public ActionResult Index()
        {
            string path = Server.MapPath("~/new.xml");
            List<Student> result = new List<Student>();

            var nodes = ReadXML(path).Descendants("Student");

            foreach (var node in nodes)
            {
                Student student = new Student();
                student.Id = Convert.ToInt32(node.Attribute("Id").Value);
                foreach (var ele in node.Elements())
                {
                    student.Name = ele.Value;
                }
                result.Add(student);
            }

            return View(result);
        }

        private XDocument ReadXML(string path)
        {
            XDocument xDoc = new XDocument();
            xDoc = XDocument.Load(path);
            return xDoc;
        }

修改Home/Index.cshtml为:

@model IEnumerable<MvcApplication1.Models.Student>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

<input type="button" value="创建XML" id="create"/>

<table>
    <tr>
        <th>编号</th>
        <th>姓名</th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.Name</td>
            <td>@Html.ActionLink("修改","Update","Home",new {id= item.Id},null)</td>
            <td>@Html.ActionLink("删除","Delete","Home", new {id = item.Id},null)</td>
        </tr>
    }
</table>

<br/>
@Html.ActionLink("创建","Create","Home")

@section scripts
{
    <script type="text/javascript">
        $(function() {
            $('#create').on('click', function() {
                $.ajax({
                    url: '@Url.Action("AddXml", "Home")',
                    dataType: 'json',
                    data: {},
                    type: 'POST',
                    success: function(data) {
                        if (data.msg) {
                            alert('创建成功');
                        }
                    }
                });
            });
        });
    </script>
}

添加元素到XML文件中

HomeController中:

        public ActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Create(Student student)
        {
            string path = Server.MapPath("~/new.xml");
            XDocument xd = XDocument.Load(path);

            XElement newStudent = new XElement("Student",
                new XAttribute("Id", student.Id),
                new XElement("Name",student.Name));

            xd.Root.Add(newStudent);
            xd.Save(path);
            return RedirectToAction("Index");
        }

Home/Create.csthml中:

@model MvcApplication1.Models.Student

@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Create</h2>

@using (Html.BeginForm("Create", "Home", FormMethod.Post, new {id = "addForm"}))
{
    @Html.LabelFor(m => m.Id)
    @Html.EditorFor(m => m.Id)

    <br/>
    @Html.LabelFor(m => m.Name)
    @Html.EditorFor(m => m.Name)

    <br/>
    <input type="submit" value="创建"/>
}

修改XML文件中的元素

HomeController中:

        public ActionResult Update(string id)
        {
            string path = Server.MapPath("~/new.xml");
            XElement xe = XElement.Load(path);
            var studentXe = xe.Elements("Student").Where(e => e.Attribute("Id").Value == id).FirstOrDefault();

            Student student = new Student();
            student.Id = Convert.ToInt32(studentXe.Attribute("Id").Value);
            student.Name = studentXe.Element("Name").Value;
            return View(student);
        }

        [HttpPost]
        public ActionResult Update(Student student)
        {
            string path = Server.MapPath("~/new.xml");
            var studentId = student.Id.ToString();
            XDocument xd = XDocument.Load(path);
            XElement node =
                xd.Root.Elements("Student").Where(e => e.Attribute("Id").Value == studentId).FirstOrDefault();
            node.SetElementValue("Name", student.Name);
            xd.Save(path);
            return RedirectToAction("Index");
        }

Home/Update.csthml中:

@model MvcApplication1.Models.Student

@{
    ViewBag.Title = "Update";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Update</h2>

@using (Html.BeginForm("Update", "Home", FormMethod.Post, new {id = "editForm"}))
{
    @Html.HiddenFor(m => m.Id)

    @Html.LabelFor(m => m.Name)
    @Html.EditorFor(m => m.Name)

    <br/>
    <input type="submit" value="修改"/>
}

删除XML文件中的元素

HomeController中:

        public ActionResult Delete(string id)
        {
            string path = Server.MapPath("~/new.xml");
            XElement xe = XElement.Load(path);
            var studentXe = xe.Elements("Student").Where(e => e.Attribute("Id").Value == id).FirstOrDefault();

            Student student = new Student();
            student.Id = Convert.ToInt32(studentXe.Attribute("Id").Value);
            student.Name = studentXe.Element("Name").Value;
            return View(student);
        }

        [HttpPost]
        public ActionResult Delete(Student student)
        {
            string path = Server.MapPath("~/new.xml");
            var studentId = student.Id.ToString();
            XDocument xd = XDocument.Load(path);
            xd.Root.Elements("Student").Where(e => e.Attribute("Id").Value == studentId).Remove();
            xd.Save(path);
            return RedirectToAction("Index");
        }

Home/Delete.cshtml中:

@model MvcApplication1.Models.Student

@{
    ViewBag.Title = "Delete";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Delete</h2>

@Model.Id
<br/>
@Model.Name
<br/>

@using (Html.BeginForm("Delete", "Home", FormMethod.Post, new {id = "delForm"}))
{
    @Html.HiddenFor(m => m.Id)
    <input type="submit" value="删除"/>
}

到此这篇关于ASP.NET MVC创建XML文件并实现元素增删改的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • asp.net操作xml增删改示例分享

    复制代码 代码如下: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlCo

  • asp.net中XML如何做增删改查操作

    一.简单介绍 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml")); //指定一个节点 XmlNode root=xml.SelectSingleNode("/root"); //获取节点下所有直接

  • asp.net(C#) Xml操作(增删改查)练习

    web.config配置: 复制代码 代码如下: <appSettings> <add key="xmlFile" value="xml/class.xml"/> </appSettings> <appSettings> <add key="xmlFile" value="xml/class.xml"/> </appSettings> 前台: 复制代码 代

  • Asp.Net+XML操作基类(修改,删除,新增,创建)第1/2页

    /**********************************************************************************  *   * 功能说明:XML处理基类  * 作者: 刘功勋;  * 版本:V0.1(C#2.0);时间:2006-12-13  *   * *******************************************************************************/ using System;

  • ASP.NET MVC创建XML文件并实现元素增删改

    如果创建如下的XML: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Students> <Student Id="1"> <Name>darren</Name> </Student> </Students> 创建XML文件 在HomeController中,在根目录下创建ne

  • asp.net创建XML文件的方法小结

    本文实例讲述了asp.net创建XML文件的方法.分享给大家供大家参考,具体如下: 方法一:按照XML的结构一步一步的构建XML文档. 通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法一:按照XML的结构一步一步的构建XML文档. 通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法二:直接定影XML文档,然后保存到文件. 通过"XmlDocumen

  • spring mvc 读取xml文件数据库配置参数的方法

    本文主要介绍怎么通过属性注入与构造器注入实现把我们项目中要用到的数据库参数放到xml文件里面去,方便部署. spring mvc 4.2.6项目 SQL Server 2008数据库 本文介绍的主要使用ApplicationContext以及其实现类实现.主要用到的是ClassPathXmlApplicationContext. ClassPathXmlApplicationContext:从类路径ClassPath中寻找指定的XML配置文件,找到并装载 完成ApplicationContext

  • asp.net简单生成XML文件的方法

    本文实例讲述了asp.net简单生成XML文件的方法.分享给大家供大家参考,具体如下: 方式一:直接使用DataSet SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Server=127.0.0.1;User ID=sa;Password=sa;Database=northwind;Persist Security Info=True"; conn.Open(); SqlDataAdapter da

  • Python创建xml文件示例

    本文实例讲述了Python创建xml文件的方法.分享给大家供大家参考,具体如下: 这是一个使用ElementTree有关类库,生成xml文件的例子 # *-* coding=utf-8 from xml.etree.ElementTree import ElementTree from xml.etree.ElementTree import Element from xml.etree.ElementTree import SubElement from xml.etree.ElementTr

  • c#使用linq技术创建xml文件的小例子

    复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Xml;using System.Xml.Linq; namespa

  • C#使用XmlDocument或XDocument创建xml文件

    使用XmlDocument或XDocument创建xml文件,具体内容如下 需引用:System.Xml; System.Xml.Linq; 1.使用XmlDocument创建xml(入门案例) static void Main(string[] args) { //使用XmlDocument创建xml XmlDocument xmldoc = new XmlDocument(); XmlDeclaration xmldec = xmldoc.CreateXmlDeclaration("1.0&

  • C# 如何在WINForm程序中创建XML文件

    <?xml version="1.0" encoding="gb2312"?> <FilesInformation>   <version>1.0.1818.42821</version>   <description>说明</description>   <FileItem    FileName="name"   FileVersion="sdf"

  • Python利用txt文件对Mysql进行增删改查移

    目录 一.关系数据库 1.数据模型 2.面相对象模型 二.了解关系数据库的概念和特点 1.基本概念 2.基本特点 三.常用字段数据类型 四.在spyder中调用文件TXT内容进入程序 一.关系数据库 1.数据模型 实体间的关系分为以下有三种: 1*)一对一模型 一对一(one-to-one) 关系模型用二维表格表示数据及数据联系,是应用最为广泛的数据模型.目前,各种常用的数据库,如Microsoft SQL Server.Microsoft Access.Microsoft FoxPro.Ora

  • ASP.NET MVC实现批量文件上传

    根据项目需要,研究了一下如何在ASP.NETMVC下实现批量文件上传.首先,介绍单文件上传:然后,介绍多文件上传如何实现. 一.单文件上传 单文件上传的原理是将文件数据放入request中,由页面直接传递至后台controller中,类似于view和controller之间传参数,直接贴上代码加注释. Upload.aspx文件中的代码: <form enctype="multipart/form-data" method="post"> <inp

随机推荐