一个期末项目关于xml的一些简单操作,包括crud, 传递数值,新建session,删除session,传递session等。
前端是html页面,传递数值是ajax技术,也可以表单传递。
1.html文件
<form name="Form" action="xxx.ashx" method="post">
<input type="text" name="input" id="input" />
</form>
2.传递
利用ajax传递数据
function reUser() {
var input = $("#input").val(); //获取输入的数据
$.ajax({
url: "../server/retrieveUser.ashx",
data: { input:input }, //传递单个数据
//data{ data1:input, data: input2} 传递多个数据
success: function (text) { //返回数据后处理方法
}
});
}
3.接受数据
ajax技术传递接收
context.Response.ContentType = "text/plain";
string uName = context.Request.Params["data1"];
表单传递接收
context.Response.ContentType = "text/plain";
string uName = HttpContext.Current.Request.Form["input"]; //使用name传值
4.ashx操作文件
xml文件
<userList>
</userList>
添加数据
在userList下面创建一个user节点,然后在里面创建一个自增长的uId,和一个uName
//载入文件
XmlDocument userXml = new XmlDocument();//新建一个xml文件读入
userXml.Load(context.Request.PhysicalApplicationPath + "./xml/user.xml");
XmlNode userList = userXml.SelectSingleNode("userList");//查找userList结点
//创建一个空节点
XmlElement userNode = userXml.CreateElement("user");
userNode.InnerText = null;
userList.AppendChild(userNode);
//创建用户自增编号节点
XmlElement idNode = userXml.CreateElement("uId"); //创建一个节点
int userId = userXml.SelectSingleNode("userList").ChildNodes.Count; //自增数
idNode.InnerText = Convert.ToString(userId); //把数值载入到节点
userNode.AppendChild(idNode); //把节点添到user下面
//创建用户名节点
XmlElement nameNode=userXml.CreateElement("uName"); //创建用户名节点
nameNode.InnerText = uName; //赋值
userNode.AppendChild(nameNode); //节点位置
//保存xml文件
userXml.Save(context.Request.PhysicalApplicationPath + "./xml/user.xml");
//向前端返回值
context.Response.Write(uName);
删除数据
根据特定条件删除,传递数据方式一样,这里采用根据用户编号删除
string uId = context.Request.Params["uId"]; //aiax传递数据
XmlNode user = userXml.SelectSingleNode("/userList/user[uId='" + uId + "']"); //条件匹配
//删除节点
userXml.DocumentElement.RemoveChild(user);
userXml.Save(context.Request.PhysicalApplicationPath + "./xml/user.xml");
context.Response.Write("1"); //成功放回1
更改数据
根据用户编号,更改用户名
string uId = context.Request.Params["uId"]; //ajax传递数据
string uNameLater = context.Request.Params["uName"]; //接收更改后的值
XmlNode user = userXml.SelectSingleNode("/userList/user[uId='" + uId + "']");//匹配条件
//修改
XmlNode name = user.SelectSingleNode("uName"); //找到xml文件中符合uid的uName节点
name.InnerText = uNameLater; //把接收的值更新到文件
//保存文件
userXml.Save(context.Request.PhysicalApplicationPath + "./xml/user.xml");
context.Response.Write("1"); //修改成功返回1
查询数据
完整查询
符合条件的只有一个,例如id查询,只能查到一个
string uId = context.Request.Params["uId"]; //接收唯一的id
XmlNode user = userXml.SelectSingleNode("/userList/user[uId='" + uId + "']"); //id匹配
context.Response.Write(user.OuterXml); //返回同一层节点的值
模糊查询
符合条件有多个,例如查找名字里有“黄”字的用户
XmlNodeList userList = userXml.SelectNodes("/userList/user[contains(uName,'" + uName + "')]"); //字符匹配
if (userList.Count !=0)
{
string userback = "";
//循环符合条件的xml节点
foreach (XmlNode user in userList)
{
userback = userback + user.OuterXml; //写入节点
}
context.Response.Write(userback); //向前端返回结果
}
session
创建session
登录功能可能要用到的session,用来保存登录用户的信息
页面跳转,并传递数值
using System.Web.SessionState; //注意添加dll
public class doLog : IHttpHandler, IRequiresSessionState //注意添加接口
{
string uId=""; //uId的值为
//创建session,名为uId,并赋值为uId
context.Session["uId"] = uId;
context.Response.Redirect("../pages/index.html?uId=" + uId); //跳转到首页,并传递session数值
}
删除session
登出界面可能要用到的删除session
context.Session.Remove("id");
html页面接收session的值
<script>
//调用方法
var user = getUrlParameter('uId');
//接收方法
function getUrlParameter(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.parent.location.href);
if (results == null) return "";
else {
return results[1];
}
}
</script>
html页面利用JavaScript技术对xml文件读取数据输出
<div class="main"> //读取位置
<script>
xmltext = new XMLHttpRequest; //请求文件
xmltext.open("GET", "../xml/user.xml", false); //打开xml文件
xmltext.send();
x = xmltext.responseXML;
user = x.getElementsByTagName("user");//查找xml所有user节点
for (i = 0; i < user.length; i++) { //循环节点
//对文本读取
document.write("<div class='uName'>");
document.write(x[i].getElementsByTagName("uName")[0].childNodes[0].nodeValue);
document.write("</div>");
}
</script>
</div>
2020.7.8 更新