XML 操作,高级查询
发布时间:2020-12-15 23:23:31 所属栏目:百科 来源:网络整理
导读:XML 操作 DataSet ds = new DataSet(); string filePath = Server.MapPath("~XmlFileitemSuppliers.xml"); ds.ReadXml(filePath); rptXml.DataSource = ds.Tables["Supplier"].DefaultView; rptXml.DataBind(); public partial class ajax_ajaxSupplie
XML 操作 DataSet ds = new DataSet(); string filePath = Server.MapPath("~XmlFileitemSuppliers.xml"); ds.ReadXml(filePath); rptXml.DataSource = ds.Tables["Supplier"].DefaultView;rptXml.DataBind(); public partial class ajax_ajaxSuppliers : System.Web.UI.Page { /// <summary> /// 返回数据 /// </summary> private string response = string.Empty; /// <summary> /// Page_Load /// </summary> /// <param name="sender">sender</param> /// <param name="e">e</param> protected void Page_Load(object sender,EventArgs e) { if (!string.IsNullOrEmpty(Request["action"])) { string action = Request["action"].ToString().Trim(); // 操作类别 switch (action.ToLower()) { // 获取省份 case "savesuppliers": SaveSuppliers(); break; default: break; } Response.Write(this.response); } } /// <summary> /// 保存供应商信息 /// </summary> private void SaveSuppliers() { string folderPath = Server.MapPath("~XmlFileitem"); string filePath = folderPath + "Suppliers.xml"; XmlDocument doc = LoadXMLDoc(folderPath,filePath); FullXMLNode(ref doc,this.ConfigXmlLabel()); doc.Save(filePath); response = "感谢您的反馈,我们会尽快给你答复。"; } /// <summary> /// 加载XML文件 /// </summary> /// <param name="folderPath">文件夹路径</param> /// <param name="filePath">文件路径</param> /// <returns>XmlDocument</returns> private XmlDocument LoadXMLDoc(string folderPath,string filePath) { XmlDocument doc = new XmlDocument(); if (!Directory.Exists(folderPath)) { Directory.CreateDirectory(folderPath); } if (!File.Exists(filePath)) { // 创建XML 头 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0","utf-8",null); doc.AppendChild(dec); // 创建一个根节点(suppliers一个产品一个文件) XmlElement item = doc.CreateElement("suppliers"); doc.AppendChild(item); } else { doc.Load(filePath); } return doc; } /// <summary> /// 填充XML /// </summary> /// <param name="doc">doc</param> /// <param name="dic">dic</param> private void FullXMLNode(ref XmlDocument doc,Dictionary<string,string> dic) { CheckNode(doc,dic); int id = GetMaxID(doc); XmlElement supplier = doc.CreateElement("supplier"); supplier.SetAttribute("id",id.ToString()); foreach (var xmlLabel in dic) { XmlElement el = doc.CreateElement(xmlLabel.Key); el.InnerXml = xmlLabel.Value; supplier.AppendChild(el); } doc.ChildNodes[1].AppendChild(supplier); } /// <summary> /// 初始化字典,配置xml标签 /// </summary> /// <returns>Dictionary</returns> private Dictionary<string,string> ConfigXmlLabel() { string company = Request["company"].ToString(); string linkMan = Request["linkMan"].ToString(); string phone = Request["phone"].ToString(); string fax = Request["fax"].ToString(); string email = Request["email"].ToString(); string webUrl = Request["webUrl"].ToString(); string address = Request["address"].ToString(); string remark = Request["remark"].ToString(); Regex myRegex = new Regex("n",RegexOptions.IgnoreCase); remark = myRegex.Replace(remark,"n"); Dictionary<string,string> dictTitle = new Dictionary<string,string>(); dictTitle.Add("company",company); dictTitle.Add("linkMan",linkMan); dictTitle.Add("phone",phone); dictTitle.Add("fax",fax); dictTitle.Add("email",email); dictTitle.Add("webUrl",webUrl); dictTitle.Add("address",address); dictTitle.Add("remark",remark); dictTitle.Add("applyDate",DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); return dictTitle; } /// <summary> /// 当前公司填写该信息,这本次填写覆盖之前信息。 /// </summary> /// <param name="doc">xml文件</param> /// <param name="dic">数据字典DIC</param> private void CheckNode(XmlDocument doc,string> dic) { string strSelectNodes = string.Format("//suppliers/supplier[company='{0}'][linkMan='{1}'][phone='{2}']",dic["company"].ToString(),dic["linkMan"].ToString(),dic["phone"].ToString()); XmlNodeList nodelst = doc.SelectNodes(strSelectNodes); // 判断是否已经存在相同纪录 if (nodelst.Count > 0) { foreach (XmlNode node in nodelst) { node.ParentNode.RemoveChild(node); } } } /// <summary> /// 获取xml文件中属性ID的最大值。 /// </summary> /// <param name="doc">doc</param> /// <returns>返回属性ID的最大值</returns> private int GetMaxID(XmlDocument doc) { XmlNodeList nodelst = doc.SelectNodes("//suppliers/supplier/@id[not(//supplier/@id > .)]"); // 获取属性id的最大值 return nodelst.Count > 0 ? (Convert.ToInt32(nodelst.Item(0).Value) + 1) : 1; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |