漫话Linq——Linq To XML
来源:互联网 发布:centos bugzilla安装 编辑:程序博客网 时间:2024/06/05 07:36
漫话Linq——Linq To XML
Linq TO XML技术交流学习案例:
#region 全局变量 /// <summary> /// XML path /// </summary> public String x_Path = String.Empty; /// <summary> /// 查询关键字 x_Name /// </summary> public String key = String.Empty; /// <summary> /// DataSet ds /// </summary> public DataSet ds = new DataSet(); /// <summary> /// x_Id /// </summary> public static String x_Id = String.Empty; #endregion #region 读取数据 /// <summary> /// 加载数据 one /// </summary> public void LoadXML_One() { /* * 此种方式绑定到 GridView 不能支持 GridView自带的分页功能, * 并且还不稳定,容易出错(不推荐) */ //加载 XML XElement elements = XElement.Load(x_Path); try { var query = from xm in elements.Elements("ChildNodes") orderby xm.Element("x_Age").Value descending select new //注意前面绑定什么字段(DataField),这里就查询什么字段 { x_Id = xm.Attribute("x_Id").Value.Trim(), //x_Id 是属性 使用 Attribute获取 x_Name = xm.Element("x_Name").Value.Trim(), x_Gender = xm.Element("x_Gender").Value.Trim(), x_Age = xm.Element("x_Age").Value.Trim(), x_Address = xm.Element("x_Address").Value.Trim(), x_Tel = xm.Element("x_Tel").Value.Trim(), x_Remark = xm.Element("x_Remark").Value.Trim() }; this.gvXML.DataSource = query; this.gvXML.DataBind(); } catch (Exception ex) { ClientScript.RegisterStartupScript(GetType(), "", "alert('系统异常!具体如下:" + ex.Message.ToString() + "');", true); } } /// <summary> /// 加载数据 Two /// </summary> public void LoadXML_Two() { /* * 方法二比较方法一更稳定,不过有些复杂, * 主要是借助 Linq To DataSet的一些技术(这节知识在后面介绍), * 别且此种方法可以支持 GridView自带分页功能(推荐) */ try { //加载XML文件到 ds中 ds.ReadXml(x_Path); if (ds != null && ds.Tables.Count > 0) { IEnumerable<DataRow> query = from xm in ds.Tables[0].AsEnumerable() orderby xm.Field<String>("x_Age") descending select xm; this.gvXML.DataSource = query.CopyToDataTable(); this.gvXML.DataBind(); } } catch (Exception ex) { ClientScript.RegisterStartupScript(GetType(), "", "alert('系统异常!具体如下:" + ex.Message.ToString() + "');", true); } } #endregion /// <summary> /// 查询方式一 /// </summary> public void SearchXML_One() { XElement elements = XElement.Load(x_Path); var query = from xm in elements.Elements("ChildNodes") where xm.Element("x_Name").Value.Contains(key) orderby xm.Element("x_Age") descending select new { x_Id = xm.Attribute("x_Id").Value.Trim(), //x_Id 是属性 使用 Attribute获取 x_Name = xm.Element("x_Name").Value.Trim(), x_Gender = xm.Element("x_Gender").Value.Trim(), x_Age = xm.Element("x_Age").Value.Trim(), x_Address = xm.Element("x_Address").Value.Trim(), x_Tel = xm.Element("x_Tel").Value.Trim(), x_Remark = xm.Element("x_Remark").Value.Trim() }; if (query != null) { this.gvXML.DataSource = query; this.gvXML.DataBind(); } } /// <summary> /// 查询方式二 /// </summary> public void SearchXML_Two() { /* * 此种查询方式较第一种更稳定,压力也会更大 */ ds = new DataSet(); ds.ReadXml(x_Path); if (ds != null && ds.Tables.Count > 0) { IEnumerable<DataRow> query = from xm in ds.Tables[0].AsEnumerable() where xm.Field<String>("x_Name").Contains(key) orderby xm.Field<String>("x_Age") descending select xm; if (query != null) { if (query.Count() > 0) { this.gvXML.DataSource = query.CopyToDataTable(); this.gvXML.DataBind(); } else { ClientScript.RegisterStartupScript(GetType(), "", "alert('查询的信息不存在');", true); } } } } /// <summary> /// 提交信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSubmit_Click(object sender, EventArgs e) { if (!IsEmpty()) { try { XElement elements = XElement.Load(x_Path); if (String.IsNullOrEmpty(x_Id)) //新增 { XElement new_Child = new XElement("ChildNodes", new XAttribute("x_Id", Guid.NewGuid()), new XElement("x_Name", this.tbox_Name.Text.Trim()), new XElement("x_Gender", this.tbox_Gender.Text.Trim()), new XElement("x_Age", this.tbox_Age.Text.Trim()), new XElement("x_Address", this.tbox_Address.Text.Trim()), new XElement("x_Tel", this.tbox_Tel.Text.Trim()), new XElement("x_Remark", this.tbox_Remark.Text.Trim()) ); elements.Add(new_Child); elements.Save(x_Path); } else { //修改 IEnumerable<XElement> element = from xm in elements.Elements("ChildNodes") where xm.Attribute("x_Id").Value.Equals(x_Id) select xm; if (element != null && element.Count() > 0) { XElement first = element.First(); first.SetElementValue("x_Name", this.tbox_Name.Text.Trim()); first.SetElementValue("x_Gender", this.tbox_Gender.Text.Trim()); first.SetElementValue("x_Age", this.tbox_Age.Text.Trim()); first.SetElementValue("x_Address", this.tbox_Address.Text.Trim()); first.SetElementValue("x_Tel", this.tbox_Tel.Text.Trim()); first.SetElementValue("x_Remark", this.tbox_Remark.Text.Trim()); elements.Save(x_Path); } } ClientScript.RegisterStartupScript(GetType(), "", "alert('" + (String.IsNullOrEmpty(x_Id) == true ? "添加" : "修改") + "成功!');", true); LoadXML_Two(); //隐藏 this.dt_Add.Attributes.Add("style", "display: none;"); //清空 Clearn(); } catch (Exception ex) { ClientScript.RegisterStartupScript(GetType(), "", "alert('系统异常!具体如下:" + ex.Message.ToString() + "');", true); } } else { ClientScript.RegisterStartupScript(GetType(), "", "alert('输入不为空!');", true); this.dt_Add.Attributes.Remove("style"); } } /// <summary> /// 删除信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gvXML_RowDeleting(object sender, GridViewDeleteEventArgs e) { String x_Id = this.gvXML.DataKeys[e.RowIndex].Value.ToString().Trim(); if (!String.IsNullOrEmpty(x_Id)) { XElement elements = XElement.Load(x_Path); IEnumerable<XElement> element = from xm in elements.Elements("ChildNodes") where xm.Attribute("x_Id").Value.Trim().Equals(x_Id) select xm; if (element.Count() > 0) { //删除 element.First().Remove(); elements.Save(x_Path); //重新加载 LoadXML_Two(); ClientScript.RegisterStartupScript(GetType(), "", "alert('删除成功成功!');", true); } } } 扩充: #region DataSet、查询结果 转化为XML /// <summary> /// 转化为XML /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ButnGetXML_Click(object sender, EventArgs e) { XDocument xdm = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XComment("这里声明相关属性"), new XElement("RootNode", new XComment("这是一个父节点"), from es in dc.EA_Script where es.Id <= 150 select new XElement[]{ new XElement("ChildNodes", new XComment("这里是子节点"), new XAttribute("x_Id",es.Id), new XElement("x_Title",es.Title), new XElement("x_Url",es.FName), new XElement("x_Detail",es.Detail), new XElement("x_Downloads",es.Downloads), new XElement("x_DateTime",es.DateTime.ToString()) )} ) ); xdm.Save(x_Path); ClientScript.RegisterStartupScript(GetType(), "", "alert('创建XML文件成功!')", true); } /// <summary> /// DataSet数据转化为XML文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnDSGetXML_Click(object sender, EventArgs e) { StringBuilder strSQL = new StringBuilder(); strSQL.Append("SELECT TOP(88) * FROM [dbo].EA_Script es ORDER BY es.Id DESC"); con = new SqlConnection(ConnectionString); sda = new SqlDataAdapter(strSQL.ToString(), con); try { DataSet ds = new DataSet(); sda.Fill(ds, "DSGetXML"); ds.WriteXml(x_Path); } catch (Exception ex) { ClientScript.RegisterStartupScript(GetType(), "", "alert('DataSet创建DataSetXML文件失败!\n" + ex.Message + "')", true); } finally { sda.Dispose(); ds.Dispose(); if (con.State == ConnectionState.Open) con.Close(); } ClientScript.RegisterStartupScript(GetType(), "", "alert('DataSet创建DataSetXML文件成功!')", true); } #endregion
0 0
- 漫话Linq——Linq To XML
- 漫话Linq——Linq To SQL
- 处理XML的新方式——LINQ to XML
- 使用LINQ to XML
- LINQ TO XML
- LINQ TO XML学习
- linq to xml demo
- LINQ to XML简介
- LINQ to XML
- linq to xml入门
- LINQ to XML
- LINQ TO Xml【转载】
- LINQ to XML
- LINQ TO XML
- LINQ to XML
- LINQ to XML
- 学习心得LINQ to XML
- Linq to XML批注
- PIL 中的 Image 模块
- C++经典面试题
- 黑马程序员_正则表达式
- Linux下memcached安装和启动方法
- C# 窗体之间值传递
- 漫话Linq——Linq To XML
- 正则表达式语法
- 正则表达式
- ARM Linux 交叉调试工具及方法
- JUnit入门
- 解决delphi XE5中使用RESTClient提交Body类型的乱码问题
- PhoneGap2.9.0本地将html打包成Android应用
- 设计模式
- 计算图像骨骼