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; ...
随机推荐
- POJ 1321 棋盘问题 (DFS + 回溯)
题目链接:http://poj.org/problem?id=1321 题意:中文题目,就不多说了...... 思路: 解题方法挺多,刚开始想的是先从N行中选择出来含有“#”的K行,再在这K行中放置K ...
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle(分形)
E. Dasha and Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- leetcode116 Populating Next Right Pointers in Each Node
题意:给一个完全二叉树: 1 / \ 2 3 / \ / \ 4 5 6 7 让左子树的next指针指向右子树,右子树的next继续指向右边,变成了这样: 1 -> NULL / \ 2 -&g ...
- CentOS 7 下nagios搭建记录
跟随 园子的文章搭建 http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html 1.遇 nagios插件地址迁移错误,记录解决. 2. ...
- java调用windows的wmi获取设备性能数据
java调用windows的wmi获取监控数据(100%纯java调用windows的wmi获取监控数据) 转:http://my.oschina.net/noahxiao/blog/73163 纯j ...
- [TC-HouseProtection]House Protection
题目大意: 一个平面直角坐标系中有给定的$n(n\le50)$个红点和$m(m\le50)$个蓝点,每个点可以选择画一个半径为$r$(所有的$r$相同)的圆或不画.圆的半径上限为$R(R\le1000 ...
- ReentrantReadWriteLock (读写锁)源码分析
关于AbstractQueuedSynchronizer中的独占锁,请参考ReentrantLock(http://www.cnblogs.com/bjorney/p/8040085.html) 1. ...
- C语言实现汉诺塔问题
代码如下: #include <stdio.h> #include <stdlib.h> void move(int n,char x,char y,char z) { ) { ...
- 上传ipa文件时报错 Your account already has a valid iOS distribution certificate
这个问题是因为你本机的生产证书是在别人的电脑上创建的,所以才会提示你已经有一个有效的生产证书,但是没有安装到本地:
- Android Service完全解析,关于服务你所需知道的一切
来自:http://www.360doc.com/content/14/0415/18/2793098_369238276.shtml 相信大多数朋友对Service这个名词都不会陌生,没错,一个老练 ...