xml文件的增删改读
最近学习了利用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">×</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">×</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文件的增删改读的更多相关文章
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- 使用dom4j对xml文件进行增删改查
1.使用dom4j技术对dom_demo.xml进行增删改查 首选要下载dom4j的jar包 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/ ...
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- Java使用DOM4J对XML文件进行增删改查操作
Java进行XML文件操作,代码如下: package com.founder.mrp.util; import java.io.File; import java.util.ArrayList; i ...
- php对xml文件的增删改查
源文件<?xml version="1.0" encoding="utf-8"?><root> <endTime>2016 ...
- C# 本地xml文件进行增删改查
项目添加XML文件:FaceXml.xml,并复制到输出目录 FaceXml.xml <?xml version="1.0" encoding="utf-8&quo ...
- C# XML基础入门(XML文件内容增删改查清)
前言: 最近对接了一个第三方的项目,该项目的数据传输格式是XML.由于工作多年只有之前在医疗行业的时候有接触过少量数据格式是XML的接口,之后就几乎没有接触过了.因此对于XML这块自己感觉还是有很多盲 ...
- Qt操作xml文件(增删改功能)
这个例子是在根据网上博客<Qt数据库(XML)>改写的一个操作XML的实现. 借鉴了很多里面的代码,大家可以结合上面的博客对照,相信你肯定会对XML的操作熟练起来. 我建立的是Qwidge ...
- xml 文件的增删改查
序列化和反序列化helper using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
随机推荐
- 创建展开行明细编辑表单的 CRUD 应用
http://www.runoob.com/jeasyui/jeasyui-app-crud3.html jQuery EasyUI 应用 - 创建展开行明细编辑表单的 CRUD 应用 当切换数据网格 ...
- php中parse_url函数的源码及分析(scheme部分)
前言 看师傅们的文章时发现,parse_url出现的次数较多,单纯parse_url解析漏洞的考题也有很多,在此研究一下源码(太菜了看不懂,待日后再补充Orz) 源码 在ext/standard/ur ...
- 一个排好序的数组,找出两数之和为x的所有组合【双指针】
#include <bits/stdc++.h> using namespace std; const int N = 1e6,INF = 0x3f3f3f3f; int a[N]; in ...
- POJ 2492 A Bug's Life【并查集高级应用+类似食物链】
Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes ...
- D - Interesting Calculator 【数值型BFS+优先队列】
There is an interesting calculator. It has 3 rows of buttons. Row 1: button 0, 1, 2, 3, ..., 9. Pres ...
- python sql语句封装连接mysql
进行了代码优化,欢迎评审 #!/usr/bin/python # -*- coding:utf-8 -*- import logging logging.basicConfig(level=loggi ...
- [luogu3455]ZAP-Queries
有时候我们会遇到一类问题:求$f(n)$,当然它是不好直接计算的,但如果$F(n)=\sum\limits_{d|n}f(d)$或$F(n)=\sum\limits_{\substack{n|d\\d ...
- 【kd-tree】bzoj4066 简单题
同p1176. #include<cstdio> #include<cmath> #include<algorithm> using namespace std; ...
- Scala实战高手****第5课:零基础实战Scala函数式编程及Spark源码解析
Scala函数式编程 ----------------------------------------------------------------------------------------- ...
- Metesploit使用随笔
平时在工作中真正用到metesploit机会不多,偶尔也会用来做漏洞验证,但是每次使用的时候都需要花点时间回忆一下具体是怎么用的,因此索性记下来方便自己,以使用Nessus扫描YS的某个硬件设备发现的 ...