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="删除"/>
}

MVC创建XML,并实现增删改,布布扣,bubuko.com

时间: 2024-12-28 04:21:54

MVC创建XML,并实现增删改的相关文章

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, name varchar(20), age integer ); 添加: insert into person(name, age) values('lisi', 19); 删除: delete from person where _id = 1; 修改: update person set name =

Rhythmk 学习 Hibernate 01 - maven 创建Hibernate 项目之 增删改查入门

1.环境: Maven :3.1.1 开发工具:Spring Tool Suite 数据库 : Mysql  5.6 2.项目文件结构 文件代码: 2.1 .pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap

使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能

此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的model文件,这里建立的class名,就是数据库里表的名字.        在这里面,可以建立表之间的关系,本次将建立Course(课程).Student(学生).StuCourse(课程学生关系)来作为一个Demo [Table("t_course")]   //可以通过Attribute的形

数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据库服务 输入net pause MSSQLserver 暂停数据库服务 输入net continue MSSQLserver 继续数据库服务 数据库的创建与管理(增删改查): 打开SQL Server 2008 方法二: 1.打开控制面板→管理工具→服务 2.右键进行选择 数据库的创建与管理: 打开

第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structured Query Language) SOL语句是和DBMS“交谈”专用的语言,不同的DBMS都认SQL语法. Sql中字符串使用单引号:通过写俩个单引号来转义一个单引号. Sql中的注释“——” 单行注释比较好 判断俩个数据是否相等使用=(单等号) 在sql语句中sql代码不区分大小写 SQL主要

C#操作xml文档增删改查(Linq to XML)

1.创建xml 1 public static void CreateXmlDoc() 2 { 3 XElement myDoc = 4 new XElement("Customers", 5 new XElement("Customer", new XAttribute("ID", "1"), 6 new XElement("Usename", "Rock Zed"), 7 new X

xml文件的增删改读

最近学习了利用XmlDocument对象对xml进行增删改读操作,就写了一个小的例子记录下来,加深印象,以后忘了也可以找出来看看. xml文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <Users> 3 <User Id="1"> 4 <Name>吴奇隆</Name> 5 <Sex>1</Sex> 6 <Pho

XML(五)dom4j增删改查

book2.xml <?xml version="1.0" encoding="UTF-8"?> <书架> <书> <书名>JAVA</书名> <作者>XXXXXX</作者> <售价>23333</售价> </书> <书> <书名>ANDROID</书名> <作者>XXXXXX</作者>

MVC学习-用EF做增删改查

在DbContext中有两个很重要的方法: 一.几个方法的说明 1.一个是Entry()方法: public DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class; 可以将 任何类型的数据放入到上下文对象中 DbEntityEntry有个 属性EntityState,它可以为上下文中的对象做标识,并依照标识的值做相应的sql操作 public enum EntityState { De