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; ...
随机推荐
- 《javascript高级程序设计》读书小延伸
这本书已经读了几章了,想着试试能不能做出点东西,就简单的练了把手.觉得对于初学者,自己试着练练,效果还不错的. 挥刀要从轻的开始,起初的原因是和同事谈起曾经的逝水年华(小时候干的坏事)时说起了曾经的一 ...
- sonarQube6.1 升级至6.2
在使用sonarQube6.1一段时间后,今天才发现sonarQube6.2已经更新,为了尝鲜,我决定在本机先尝试一下,如何升级至6.2 在这里,根据站点提示的升级步骤 1.下载新版本sonarQub ...
- [jquery] ajax parsererror
http://stackoverflow.com/questions/5061310/jquery-returning-parsererror-for-ajax-request 方法一: 直接去掉 d ...
- Codeforces 810 C. Do you want a date?
C. Do you want a date? time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 遇见requestAnimationFrame
今天,在读javascript异步编程的js事件深入理解部分的时候,了解到了requestAnimationFrame 这个api,在这里记录一下. 原文: setTimeout 和 setInter ...
- (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest
layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest author: "luow ...
- hadoop 编译代码及运行
搞定了hadoop配置之后,可以写代码运行了,首先要配一下CLASS_PATH,修改/etc/profile export JAVA_HOME=/usr/lib/jvm/java--openjdk-i ...
- CentOS7安装bind域名服务
安装Bind Chroot DNS 服务器 yum install bind-chroot bind -y 拷贝bind相关文件,准备bind chroot 环境 cp -R /usr/share/d ...
- 触摸事件onTouchListener
1.效果图: (1)MainAcivity.java package com.example.app3; import android.content.DialogInterface; import ...
- 让你的saga更具有可伸缩性(Scaling NServiceBus Sagas)
https://lostechies.com/jimmybogard/2013/03/26/scaling-nservicebus-sagas/ 当我们使用NServiceBus sagas (pro ...