最近学习了利用XmlDocument对象对xml进行增删改读操作,就写了一个小的例子记录下来,加深印象,以后忘了也可以找出来看看。

xml文件:

 <?xml version="1.0" encoding="utf-8"?>
<Users>
<User Id="1">
<Name>吴奇隆</Name>
<Sex>1</Sex>
<Phone>888888</Phone>
</User>
<User Id="2">
<Name>刘诗诗</Name>
<Sex>0</Sex>
<Phone>666999</Phone>
</User>
<User Id="3">
<Name>刘德华</Name>
<Sex>1</Sex>
<Phone>999999</Phone>
</User>
<User Id="4">
<Name>王祖贤</Name>
<Sex>0</Sex>
<Phone>888899</Phone>
</User>
<User Id="5">
<Name>吴倩莲</Name>
<Sex>0</Sex>
<Phone>888999</Phone>
</User>
<User Id="6">
<Name>张卫健</Name>
<Sex>1</Sex>
<Phone>666888</Phone>
</User>
<User Id="7">
<Name>关之琳</Name>
<Sex>0</Sex>
<Phone>888666</Phone>
</User>
<User Id="8">
<Name>张敏</Name>
<Sex>0</Sex>
<Phone>888866</Phone>
</User>
<User Id="9">
<Name>梁朝伟</Name>
<Sex>1</Sex>
<Phone>888889</Phone>
</User>
<User Id="10">
<Name>李连杰</Name>
<Sex>1</Sex>
<Phone>888886</Phone>
</User>
<User Id="11">
<Name>袁洁莹</Name>
<Sex>0</Sex>
<Phone>666999</Phone>
</User>
</Users>

xml文件对应的类:

  public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Sex { get; set; }
public string Phone { get; set; } }

前台页面用的是Bootstrap Table

前台代码:

 <!DOCTYPE html>

 <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<link href="~/scripts/bootstrap-table/css/bootstrap.css" rel="stylesheet" />
<link href="~/scripts/bootstrap-table/css/bootstrap-table.css" rel="stylesheet" />
<script src="~/scripts/bootstrap-table/js/jquery-1.10.2.js"></script>
<script src="~/scripts/bootstrap-table/js/bootstrap.js"></script>
<script src="~/scripts/bootstrap-table/js/bootstrap-table.js"></script>
<script src="~/scripts/bootstrap-table/js/bootstrap-table-zh-CN.js"></script>
<script type="text/javascript">
$(function () {
$("#table").bootstrapTable({
toolbar: '#toolbar',//工具栏
pagination: true,//是否显示分页条
pageNumber: 1,//首页页码
pageSize: 10,//每页条数
pageList: [10, 20, 30],//可供选择的页面数据条数
url: '/UserManager/GetUsers',//获取数据的url
columns: [
{
checkbox: true//设置复选框
},
{
field: 'Id',
title: '编号'
},
{
field: 'Name',
title: '姓名'
}, {
field: 'Sex',
title: '性别',
formatter: function (value, row, index) {
if (value == "1") {
return '男';
} else {
return '女';
}
}
}, {
field: 'Phone',
title: '电话'
}, {
field: 'operate',
title: '操作',
formatter: function (value,row,index) {
return '<a href="javascript:void(0)" onclick="deleteUser(' + row.Id + ')">删除</a>'
}
}]
});
});
//删除
function deleteUser(id) {
if (confirm("你确定要删除吗?")) {
$.get("/UserManager/DeleteUser?Id=" + id, null, function (data) {
if (data == "ok") {
$("#table").bootstrapTable('refresh');
} else {
alert("删除失败!");
}
})
}
}
//添加
function Add() {
var id = $("#uid").val();
var name = $("#name").val();
var sex = $("#sex").val();
var phone = $("#phone").val();
$.post("/UserManager/AddUser", {Id:id, Name: name, Sex: sex, Phone: phone }, function (data) {
if (data == "ok") {
$('#addModal').modal('hide');
$("#table").bootstrapTable('refresh');
$("#uid").val("");
$("#name").val("");
$("#sex").val("");
$("#phone").val("");
} else {
alert("添加失败!");
}
});
}
//修改
function Edit() {
var id = $("#editId").val();
var name=$("#editName").val();
var sex= $("#editSex").val();
var phone = $("#editPhone").val();
$.post("/UserManager/EditUser", { Id: id, Name: name, Sex: sex, Phone: phone }, function (data) {
if (data == "ok") {
$('#editModal').modal('hide');
$("#table").bootstrapTable('refresh');
$("#editId").val("");
$("#editName").val("");
$("#editSex").val("");
$("#editPhone").val("");
} else {
alert("修改失败!");
}
});
}
//显示修改
function showEdit() {
var row = $("#table").bootstrapTable('getSelections');
if (row.length<=0) {
alert("请选择你要修改的行!");
return;
}
if (row.length > 1) {
alert("每次只能修改一行数据!");
return;
}
$("#editId").val(row[0].Id);
$("#editName").val(row[0].Name);
$("#editSex").val(row[0].Sex);
$("#editPhone").val(row[0].Phone);
$("#editModal").modal('show');
}
//批量删除
function deleteRows() {
var row = $('#table').bootstrapTable('getSelections');
if (row.length > 0) {
if (confirm("你确定要删除吗?")) {
var ids = $.map($('#table').bootstrapTable('getSelections'), function (row) {
return row.Id;
});
$.post("@Url.Action("DeleteUsers", "UserManager")", { ids:ids }, function (data) {
if (data == "ok") {
$('#table').bootstrapTable('remove', { field: 'Id', values: ids });
} else {
alert("删除失败");
}
});
}
} else {
alert("请选择你要删除的行!");
}
}
</script>
</head>
<body>
<table id="table"></table>
<div>
<!--添加 Modal -->
<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">添加用户</h4>
</div>
<div class="modal-body">
<label for="name">编号:</label>
<input type="text" class="form-control" id="uid" placeholder="请输入编号">
<label for="name">姓名:</label>
<input type="text" class="form-control" id="name" placeholder="请输入姓名">
<label for="name">性别:</label>
<select id="sex" class="form-control">
<option selected>--请选择--</option>
<option value="1">男</option>
<option value="0">女</option>
</select>
<label for="name">电话:</label>
<input type="text" class="form-control" id="phone" placeholder="请输入电话">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" onclick="Add();">保存</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div>
<div>
<!-- 修改Modal -->
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">修改用户</h4>
</div>
<div class="modal-body">
<label for="name">编号:</label>
<input type="text" class="form-control" readonly id="editId" >
<label for="name">姓名:</label>
<input type="text" class="form-control" id="editName" >
<label for="name">性别:</label>
<select id="editSex" class="form-control">
<option>--请选择--</option>
<option value="1">男</option>
<option value="0">女</option>
</select>
<label for="name">电话:</label>
<input type="text" class="form-control" id="editPhone">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" onclick="Edit();">保存</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div> <div class="btn-group" id="toolbar">
<button type="button" class="btn btn-default glyphicon glyphicon-pencil" onclick="showEdit();">修改</button>
<button type="button" class="btn btn-default glyphicon glyphicon-trash" onclick="deleteRows();">批量删除</button>
<button type="button" class="btn btn-default glyphicon glyphicon-plus" data-toggle="modal" data-target="#addModal" >添加</button>
</div> </body>
</html>

后台代码:

   public class UserManagerController : Controller
{
#region 数据展示页面
/// <summary>
/// 数据展示页面
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
return View();
}
#endregion
#region 读取xml数据
/// <summary>
/// 读取xml数据
/// </summary>
/// <returns></returns>
public ActionResult GetUsers()
{
List<User> list = new List<User>();
string path = Server.MapPath("~/xmlfile/User.xml");
//创建xml文档对象
XmlDocument doc = new XmlDocument();
//加载xml数据
doc.Load(path);
//获取xml根节点
XmlElement root = doc.DocumentElement;
//判断是否有子节点
if (root.HasChildNodes)
{
foreach (XmlNode node in root)
{
User user = new User();
//获取当前节点属性Id的值
user.Id = Convert.ToInt32(node.Attributes["Id"].Value);
if (node.SelectSingleNode("Name") != null)
{ //获取节点值
user.Name = node["Name"].InnerText;
}
if (node.SelectSingleNode("Sex") != null)
{
user.Sex = Convert.ToInt32(node["Sex"].InnerText);
}
if (node.SelectSingleNode("Phone") != null)
{
user.Phone = node["Phone"].InnerText;
}
list.Add(user);
}
}
return Json(list, JsonRequestBehavior.AllowGet);
}
#endregion
#region 添加
/// <summary>
/// 添加
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public ActionResult AddUser(User user)
{
try
{
XmlDocument doc = new XmlDocument();
string path = Server.MapPath("~/xmlfile/User.xml");
doc.Load(path);
XmlElement root = doc.DocumentElement;
XmlElement xElement = doc.CreateElement("User");
xElement.SetAttribute("Id", user.Id.ToString());
root.AppendChild(xElement);
XmlElement Name = doc.CreateElement("Name");
Name.InnerText = user.Name;
xElement.AppendChild(Name);
XmlElement Sex = doc.CreateElement("Sex");
Sex.InnerText = user.Sex.ToString();
xElement.AppendChild(Sex);
XmlElement Phone = doc.CreateElement("Phone");
Phone.InnerText = user.Phone;
xElement.AppendChild(Phone);
doc.Save(path);
return Content("ok");
}
catch
{
return Content("error");
} }
#endregion
#region 删除
/// <summary>
/// 删除
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public ActionResult DeleteUser(int Id)
{
XmlDocument doc = new XmlDocument();
string path = Server.MapPath("~/xmlfile/User.xml");
doc.Load(path);
XmlElement root = doc.DocumentElement;
XmlNode user = doc.SelectSingleNode("/Users/User[@Id='" + Id + "']");
if (user != null)
{
root.RemoveChild(user); }
doc.Save(path);
return Content("ok");
}
#endregion
#region 修改
/// <summary>
/// 修改
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public ActionResult EditUser(User user)
{
XmlDocument doc = new XmlDocument();
string path = Server.MapPath("~/xmlfile/User.xml");
doc.Load(path);
// XmlElement root = doc.DocumentElement;
XmlNode xNode = doc.SelectSingleNode("/Users/User[@Id='" + user.Id + "']");
if (xNode != null)
{
// xNode.Attributes["Id"].Value = user.Id.ToString();
if (xNode["Name"] != null)
{
xNode["Name"].InnerText = user.Name;
}
if (xNode["Sex"] != null)
{
xNode["Sex"].InnerText = user.Sex.ToString();
}
if (xNode["Phone"] != null)
{
xNode["Phone"].InnerText = user.Phone;
}
}
doc.Save(path);
return Content("ok");
}
#endregion
#region 批量删除
/// <summary>
/// 批量删除
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public ActionResult DeleteUsers(int[] ids)
{ XmlDocument doc = new XmlDocument();
string path = Server.MapPath("~/xmlfile/User.xml");
doc.Load(path);
XmlElement root = doc.DocumentElement;
try
{
for (int i = 0; i < ids.Length; i++)
{
XmlNode xNode = doc.SelectSingleNode("/Users/User[@Id='" + ids[i] + "']");
if (xNode != null)
{
root.RemoveChild(xNode);
}
}
doc.Save(path);
return Content("ok");
}
catch
{
return Content("no");
} }
#endregion
}

最终显示效果:

添加页面:

修改页面:

xml文件的增删改读的更多相关文章

  1. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  2. 使用dom4j对xml文件进行增删改查

    1.使用dom4j技术对dom_demo.xml进行增删改查 首选要下载dom4j的jar包 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/ ...

  3. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  4. Java使用DOM4J对XML文件进行增删改查操作

    Java进行XML文件操作,代码如下: package com.founder.mrp.util; import java.io.File; import java.util.ArrayList; i ...

  5. php对xml文件的增删改查

    源文件<?xml version="1.0" encoding="utf-8"?><root>  <endTime>2016 ...

  6. C# 本地xml文件进行增删改查

    项目添加XML文件:FaceXml.xml,并复制到输出目录 FaceXml.xml <?xml version="1.0" encoding="utf-8&quo ...

  7. C# XML基础入门(XML文件内容增删改查清)

    前言: 最近对接了一个第三方的项目,该项目的数据传输格式是XML.由于工作多年只有之前在医疗行业的时候有接触过少量数据格式是XML的接口,之后就几乎没有接触过了.因此对于XML这块自己感觉还是有很多盲 ...

  8. Qt操作xml文件(增删改功能)

    这个例子是在根据网上博客<Qt数据库(XML)>改写的一个操作XML的实现. 借鉴了很多里面的代码,大家可以结合上面的博客对照,相信你肯定会对XML的操作熟练起来. 我建立的是Qwidge ...

  9. xml 文件的增删改查

    序列化和反序列化helper using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

随机推荐

  1. owasp zap 安全审计工具 的fuzzer使用

    owasp zap 安全审计工具 的fuzzer可用场景如下: 一.SQL注入和XSS攻击等 1.选中请求中需要检查的字段值,右键-Fuzzy 2.选中file fuzzer功能(包括SQL注入,xs ...

  2. python的ConfigParser读取设置配置文件

    python 读写配置文件在实际应用中具有十分强大的功能,在实际的操作中也有相当简捷的操作方案,以下的文章就是对python 读写配置文件的具体方案的介绍,望你浏览完下面的文章会有所收获. pytho ...

  3. cvCalcOpticalFlowPyrLK的使用--基于高斯金字塔的稀疏光流特征集求解

    void cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr, CvArr* prev_pyr, CvArr* curr_pyr, ...

  4. 51nod 1344 走格子【贪心/前缀和】

    1344 走格子 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格 ...

  5. 51nod 1137 矩阵乘法【矩阵】

    1137 矩阵乘法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果.   Input 第1行 ...

  6. DP重开

    颓了差不多一周后,决定重开DP 这一周,怎么说,学了学trie树,学了学二叉堆,又学了学树状数组,差不多就这样,然后和cdc一番交流后发现,学这么多有用吗?noip的范围不就是提高篇向外扩展一下,现在 ...

  7. [CF494D]Birthday

    题意:给一棵带边权的树,定义如下的一些东西 $S(x)$表示以$x$为根的子树中的节点组成的集合 $d(u,v)$表示$u$和$v$之间的距离 $f(u,v)\sum\limits_{x\in S(v ...

  8. [CSAcademy]Connected Tree Subgraphs

    题目大意: 给你一棵n个结点的树,求有多少种染色方案,使得染色过程中染过色的结点始终连成一块. 思路: 树形DP. 设f[x]表示先放x时,x的子树中的染色方案数,y为x的子结点. 则f[x]=pro ...

  9. IOS学习笔记39--NSString各种语法的使用

    今天就NSString的各种语法学习学习,以后慢慢补充: 1.字符串的遍历 NSString *string = @"CHENGWULI"; //字符串的长度 int count ...

  10. MAC接普通外置键盘的修改键位的方法

    使用mac电脑已经有一年多,现在对它的喜欢是每天都在增加,甚至有些离不开了.今天突然想接个外置键盘,在使用过程中,遇到一些问题,记录一下. 使用过mac的同学都知道,mac键盘有一个最大的特点是: 比 ...