加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读