【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 Project\Namer\FieldList.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;
}
(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 = ;
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;
}
(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 Project\Namer\FieldList.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 + ).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;
}
(5)对XML进行插入信息操作:
public bool insert(string s)
{
bool state = true;
int i = ;
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 Project\Namer\FieldList.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[][])
{
i++;
}
}
element.SetAttribute("number", i.ToString());
element.SetAttribute("type", one_document[][]);
foreach (List<string> list in one_document)
{
string fieldindex = list[];
string fieldtype = list[];
string fieldname = list[];
string fieldvalue = list[];
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 Project\Namer\FieldList.xml");
return state;
}
(6)对XML进行编辑信息操作:
public bool EditDATA(string str_s)
{
bool flag = true;
int temp = ;
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[];
string typename = basicinfo[];
string preview = basicinfo[];
int temp_documentindex = Convert.ToInt32(basicinfo[]);
int int_documentindex = temp_documentindex + temp;
string documentindex = int_documentindex.ToString();
one_document.Remove(one_document[]);
XmlDocument doc = new XmlDocument();
doc.Load(@"F:\Winform Project\Namer\FieldList.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[];
string fieldtype = list[];
string fieldname = list[];
string fieldvalue = list[];
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 = ; i <= ; 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 - ]);
}
}
}
doc.Save(@"F:\Winform Project\Namer\FieldList.xml");
return flag;
}
最后效果:



本文中对部分相对比较重要的代码进行了交代,希望对大家有点帮助。
【WebService】WebService的创建和使用——文件名称生成器的更多相关文章
- WebService支持多平台上传文件的实现
WebService支持多平台上传文件的实现 要使用网站上传文件,在ASP.NET的范畴,我基本上能想到的有两类,一类是通过HTTP POST请求获得文件信息,另外一类是通过WebService或 ...
- 通过Java WebService接口从服务端下载文件
一. 前言 本文讲述如何通过webservice接口,从服务端下载文件.报告到客户端.适用于跨系统间的文件交互,传输文件不大的情况(控制在几百M以内).对于这种情况搭建一个FTP环境,增加了系统部署的 ...
- 牛客网Java刷题知识点之File对象常用功能:获取文件名称、获取文件路径、获取文件大小、获取文件修改时间、创建与删除、判断、重命名、查看系统根目录、容量获取、获取某个目录下内容、过滤器
不多说,直接上干货! 获取文件名称.获取文件路径.获取文件大小.获取文件修改时间 FileMethodDemo.java package zhouls.bigdata.DataFeatureSelec ...
- C#判断文件及文件夹是否存在并创建(C#判断文件夹存在)
protected void Button1_Click(object sender, EventArgs e) { if (Directory.Exists(Server.MapPath(" ...
- linux和windows文件名称长度限制
Linux文件名称的长度限制是255个字符 windows下全然限定文件名称必须少于260个字符,文件夹名必须小于248个字符. linux下文件数.文件夹数.文件名称长度的各种限制 下面測试都是在没 ...
- C# 创建新RTF文件
这个和WINDOWS创建RTF文件一样 public void CreateRtfFile(string RtfFileName) { RichTextBox richTextBox1 = new R ...
- Spring源码学习-容器BeanFactory(一) BeanDefinition的创建-解析资源文件
写在前面 从大四实习至今已一年有余,作为一个程序员,一直没有用心去记录自己工作中遇到的问题,甚是惭愧,打算从今日起开始养成写博客的习惯.作为一名java开发人员,Spring是永远绕不过的话题,它的设 ...
- VFS 上传文件到sftp 报错 包含中文路径 或者中文文件名称
之前用Apache commons-vfs工具进行ftp操作(FTP服务器是 FileZilla Server) 上传本地文件 到 ftp服务器上,如果文件名称 包含 中文 报错 org.apache ...
- [Swift]在Swift项目中创建桥接头文件,Swift文件和Objective-C文件相互调用
创建一个Swift项目[demo],以下内容Swift文件和Objective-C文件相互调用都是在Swift项目中. 一.Swift文件调用Objective-C文件 新建文件夹[SupportFi ...
随机推荐
- 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq
5天玩转C#并行和多线程编程系列文章目录 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq 5天玩转C#并行和多线程编 ...
- 用DirectX实现魔方(三)视角变换及缩放(附源码)
在本系列第一篇介绍过鼠标按键的功能,如下. 左键拖拽 - 旋转魔方 右键拖拽 - 变换视角 滚轮 - 缩放魔方 今天研究一下如何实现后面两个功能,用到的技术主要是Arcball,Arcball是实现M ...
- 翻译-高效DevOps的10项实践
原文链接: http://www.drdobbs.com/architecture-and-design/top-10-practices-for-effective-devops/240149363 ...
- atitit opencv apiattilax总结 约500个函数 .xlsx
atitit opencv apiattilax总结 约500个函数 .xlsx 1.1. CxCore中文参考手册 1 1.2. 机器学习中文参考手册 knn svm 1 1.3. CvAu ...
- Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview
Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview 知识图谱的表示和在搜索中的展1 提升Google搜索效果3 1.找到最想要的信息.3 2.提供最全面的摘要.4 ...
- Atitit 贝叶斯算法的原理以及垃圾邮件分类的原理
Atitit 贝叶斯算法的原理以及垃圾邮件分类的原理 1.1. 最开始的垃圾邮件判断方法,使用contain包含判断,只能一个关键词,而且100%概率判断1 1.2. 元件部件串联定律1 1.3. 垃 ...
- 《轻量级Java Web整合开发入门SSH》 - 快速理解Java框架的又一积木
学习JAVA不难,难的是没有多余的时间给你仔细学习. 伴随着项目的不断跟进,责任重于泰山,必须快速提升. 我不能期望把一本书或者一个项目完全吃透,只希望能用数量去 ...
- golang开发缓存组件
代码地址github:cache 花了一天时间看了下实验楼的cache组件,使用golang编写的,收获还是蛮多的,缓存组件的设计其实挺简单的,主要思路或者设计点如下: 全局struct对象:用来做缓 ...
- iOS---类方法(静态方法)和实例方法
类方法 实例方法是以+开头的方法, 实例方法是用实例对象访问: 类方法的对象是类而不是实例,通常用来创建对象或者工具类. 在实例方法里,根据继承原理发送消息给self和super其实都 ...
- asp.net 站点重启
有时一些特殊情况需要重启站点,在System.Web.dll程序集下HttpRuntime类下有一个静态方法UnloadAppDomain,使用这个方法可以重启站点: protected void b ...