zoukankan      html  css  js  c++  java
  • 【WebService】WebService的创建和使用——文件名称生成器

    简介

          之前做过一个文件名称生成器,通过Webservice读取XML文件并将其通过Json传到客户端中的combobx,用户通过combobox选择要生成文件的名称模板,点击生成则会产生一个文件名称并保存到数据库中。

    涉及到的编程内容

        webservice,XML,Access,Winform

    Webservice的创建

          (1)创建空Web应用程序     (2)添加Web服务(asmx)

        (3)在[WebMethod]下写要使用的方法

       (4)通过浏览器查看是否创建好服务

       (5)发现已经建立了该服务

    Webservice的使用

      (1)创建一个新窗体,添加服务引用

     

       (2)点击“发现”找到相应的websevice,再点击“高级”

        (3)点击“添加Web引用”

        (4)点击“此解决方案中的Web服务”

        (5)点击“添加引用”

       (6)在窗体中引用即可

    XML文件的样式:

    数据库表的字段:

    Winform程序界面:

                

    Webservice调用类的方法:

          (1)在webservice中调用类的方法来完成某些操作,而不是直接写在webservice里。

          (2)从XML文件读取信息(界面一中的combobox):

     public List<string> BackSchemaList()
            {
                List<string> name = new List<string>();
                XmlDocument doc = new XmlDocument();
                doc.Load(@"F:Winform ProjectNamerFieldList.xml");
                XmlNode xn = doc.SelectSingleNode("FieldList");
                XmlNodeList xnl = xn.ChildNodes;
                foreach (XmlNode xn1 in xnl)
              {
                       string fieldvalue = "";             
                       XmlElement xe = (XmlElement)xn1;
                       string listnumber = xe.GetAttribute("number").ToString();
                       string listtype = xe.GetAttribute("type").ToString();
                       XmlNodeList xnl0 = xe.ChildNodes;
                   foreach (XmlNode xn2 in xnl0)
                   {
                       XmlElement xe1 = (XmlElement)xn2;
                       fieldvalue += xe1.GetAttribute("Value").ToString();                     
                   }
                   name.Add(fieldvalue);
                   name.Add(listtype);
              }      
                return name;
            }
    View Code

          (3)选取一个模板进行模糊查询,给新生成的文件名称加上个序列号:

     public string generatedata(string s1,string s2)
            {
                string str_provider = "Provider=Microsoft.Ace.OLEDB.12.0;";
                string str_source = "Data Source=F:/Winform Project/Namer/Namer.accdb;Persist Security Info=False;";  //数据源路径
                string str_connection = str_provider + str_source;  //连接字符串
                int xuliehao = 1;
                OleDbConnection cnn;
                OleDbCommand cmd;
                OleDbDataReader datar;
                string str_sql1 = "SELECT name FROM T_name WHERE name Like '"+s1+"%';";
                cnn = new OleDbConnection(str_connection);
                cmd = new OleDbCommand(str_sql1, cnn);
                cnn.Open();
                datar = cmd.ExecuteReader();
                while (datar.Read())
                {
                    if (datar["name"].ToString() == null)
                    {
                        break;
                    }
                    else { xuliehao++; }
                }
                cnn.Close();
                string number = string.Format("{0:000}", xuliehao);
                s1 += number;
                string dt = DateTime.Now.ToString();
                string str_sql2 = "insert into T_name (name,code,timeNow,type) values ('"+s1+"','"+number+"','"+dt+"','"+s2+"');";
                cnn = new OleDbConnection(str_connection);
                cmd = new OleDbCommand(str_sql2, cnn);
                cnn.Open();
                int i = cmd.ExecuteNonQuery();
                cnn.Close();
                string newname = s1;
                return newname;     
            }
    View Code

          (4)读取一条信息并显示其详细字段:

     public List<List<string>> Backonelist(int int_index,string str_type)
            {
                List<List<string>> documentlist = new List<List<string>>();
                XmlDocument doc = new XmlDocument();
                doc.Load(@"F:Winform ProjectNamerFieldList.xml");
                XmlNode xn = doc.SelectSingleNode("FieldList");
                XmlNodeList xnl = xn.ChildNodes;
                foreach (XmlNode xn1 in xnl)
                {
                    XmlElement xe = (XmlElement)xn1;
                    XmlNodeList xnl0 = xe.ChildNodes;
                    if (xe.GetAttribute("number").ToString() == (int_index + 1).ToString() && xe.GetAttribute("type").ToString() == str_type)
                    {
                        foreach (XmlNode xn2 in xnl0)
                        {
                            List<string> field = new List<string>();
                            XmlElement xe1 = (XmlElement)xn2;
                            field.Add(xe1.GetAttribute("Index").ToString());
                            field.Add(xe1.GetAttribute("Type").ToString());
                            field.Add(xe1.GetAttribute("Name").ToString());
                            field.Add(xe1.GetAttribute("Value").ToString());
                            documentlist.Add(field);
                        }          
                    }
                }                   
                return documentlist;
            }
    View Code

          (5)对XML进行插入信息操作:

     public bool insert(string s)
            {
                bool state = true;
                int i = 1;
                List<List<string>> one_document = new List<List<string>>();
                one_document = JsonConvert.DeserializeObject<List<List<string>>>(s);        
                XmlDocument doc = new XmlDocument();
                doc.Load(@"F:Winform ProjectNamerFieldList.xml");
                XmlNode xn = doc.SelectSingleNode("FieldList");  
                XmlElement element = doc.CreateElement("list");
                foreach (XmlNode node in xn.ChildNodes)
                {
                    XmlElement xe = (XmlElement)node;
                    if (xe.GetAttribute("type").ToString() == one_document[0][0])
                    {
                       i++;
                    }
                }
                element.SetAttribute("number", i.ToString());
                element.SetAttribute("type", one_document[0][0]);            
                foreach (List<string> list in one_document)
                {
                       string fieldindex = list[1];
                       string fieldtype = list[2];
                       string fieldname = list[3];
                       string fieldvalue = list[4];
                       XmlElement element2 = doc.CreateElement("Field");
                       element.AppendChild(element2);
                       element2.SetAttribute("Index", fieldindex);
                       element2.SetAttribute("Type", fieldtype);
                       element2.SetAttribute("Name", fieldname);
                       element2.SetAttribute("Value", fieldvalue);                   
                }
                xn.AppendChild(element);  
                doc.Save(@"F:Winform ProjectNamerFieldList.xml");            
                return state;
            }
    View Code

          (6)对XML进行编辑信息操作:

     public bool EditDATA(string str_s)
            {
                bool flag = true;
                int temp = 1;
                List<List<string>> one_document = new List<List<string>>();
                one_document = JsonConvert.DeserializeObject<List<List<string>>>(str_s);
                List<string> basicinfo = new List<string>();
                basicinfo=one_document[0];
                string typename = basicinfo[0];
                string preview = basicinfo[1];
                int temp_documentindex = Convert.ToInt32(basicinfo[2]);
                int int_documentindex = temp_documentindex + temp;
                string documentindex = int_documentindex.ToString();
                one_document.Remove(one_document[0]);
                XmlDocument doc = new XmlDocument();
                doc.Load(@"F:Winform ProjectNamerFieldList.xml");
                XmlNode xn = doc.SelectSingleNode("//list[@ number='" + documentindex + "'][@ type='" + typename + "']");
                XmlNodeList xnl = xn.ChildNodes;
                List<XmlNode> xmllist = new List<XmlNode>();
                foreach (XmlNode item in xnl)
                {
                    xmllist.Add(item);
                }
                foreach (XmlNode item in xmllist)
                {
                    item.ParentNode.RemoveChild(item);
                }
                foreach (List<string> list in one_document)
                {
                    string fieldindex = list[0];
                    string fieldtype = list[1];
                    string fieldname = list[2];
                    string fieldvalue = list[3];
                    XmlElement element2 = doc.CreateElement("Field");
                    xn.AppendChild(element2);
                    element2.SetAttribute("Index", fieldindex);
                    element2.SetAttribute("Type", fieldtype);
                    element2.SetAttribute("Name", fieldname);
                    element2.SetAttribute("Value", fieldvalue);
                    if (element2.GetAttribute("Name").ToString() == "category")
                    {
                        XmlElement element3 = doc.CreateElement("CodeList");
                        element2.AppendChild(element3);
                        for (int i = 1; i <= 4; i++)
                        {
                            string[] array = { "personal", "work", "play", "trans" };
                            XmlElement element4 = doc.CreateElement("CodeWord");
                            element3.AppendChild(element4);
                            element4.SetAttribute("Code", i.ToString());
                            element4.SetAttribute("Description", array[i - 1]);
                        }
                    }
                }
                doc.Save(@"F:Winform ProjectNamerFieldList.xml");  
                return flag;
            }
    View Code

    最后效果:

    本文中对部分相对比较重要的代码进行了交代,希望对大家有点帮助。

  • 相关阅读:
    Spring IOC
    MyBatis环境搭建
    Spring AOP
    DWR在Spring中应用
    利用反射自动封装成实体对象
    Spring源码下载
    You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法
    由于未能创建 Microsoft Visual C# 2010 编译器,因此未能打开项目 "xxx" ”的解决方法
    正则表达式
    安卓模拟器里面的cpu/abi里面有AMD、intel x86、mlps应该选择哪个
  • 原文地址:https://www.cnblogs.com/lovecsharp094/p/5450745.html
Copyright © 2011-2022 走看看