c#文件ashx对xml的基本操作

一个期末项目关于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 更新

猜你喜欢

转载自blog.csdn.net/m0_46977769/article/details/107193577