C# WebServices中处理XML方式
1、企业系统集成的时候,大量的字段是很麻烦处理的,用Format 的方式可快速处理
string sql = @"SELECT * FROM table WHERE TASKID='" + taskid + "'";
DataTable dt = DBUtil.Query(sql).Tables[0];
//此处是获取XML模板的路径
Stream xmlStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("BPMWinService.Xml." + xmlname + ".xml");
XmlDocument xml = new XmlDocument();
xml.Load(xmlStream);
System.Xml.XmlNamespaceManager ns = new XmlNamespaceManager(xml.NameTable);
ns.AddNamespace("soap", "http://地址");
ns.AddNamespace("ns2", "http://地址/");
XmlNode InputParameters = xml.SelectSingleNode("soap:Envelope/soap:Body/ns2:InputParameters", ns);
string mModel = InputParameters.InnerXml;
InputParameters.RemoveAll();
//此处使用Format去设置其中的InnerText值,注意InnerXml,InnerText,OuterXml的意义和用法
//Format在循环中更有意义,只是需要先去设置XML的模板
mModel = string.Format(mModel, Convert.ToString(dt.Rows[0]["invoice_id"]), Convert.ToInt32(dt.Rows[0]["taskid"]), state);
InputParameters.InnerXml = mModel;
//System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
//stopwatch.Start();
WebServiceCaller wsCaller = new WebServiceCaller();
string isSaveXML = System.Configuration.ConfigurationManager.AppSettings["IsSaveXML"];
if (isSaveXML == "true")
xml.Save(@"C:/BPMWinService/ERP_BPMFP_XML.xml");
//自己调用别人接口的方法
string strReturnValue = wsCaller.QuerySoapWebService(url, YZHelper.ERP_BPMFP, xml);
//stopwatch.Stop();
XmlDocument returnDoc = new XmlDocument();
returnDoc.LoadXml(strReturnValue);
//这里不知道为什么获取不到节点,没整明白,就用一下的方式获取节点列表,再做循环去获取节点值,LastChild 的个数和返回的XML层级有关,有几层就写
//几个LastChild
XmlNodeList XNL = returnDoc.LastChild.LastChild.LastChild.ChildNodes;
XmlNode _Message = null;
string massage = string.Empty;
for (int i = 0; i < XNL.Count; i++)
{
if (Convert.ToString(XNL[i].Name) == "***")
{
_Message = XNL[i];
if (_Message.InnerText == "E")
{
for (int j = 0; j < XNL.Count; j++)
{
if (Convert.ToString(XNL[j].Name) == "***")
{
massage = XNL[j].InnerText;
break;
}
}
}
break;
}
}
/// <summary>
/// SOAP协议调用webservice
/// </summary>
private string QuerySoapWebService(String url, String methodName, string xmlNs, XmlDocument xml)
{
try
{
XML_NAMESPACE[url] = xmlNs;
byte[] data;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
// ????head
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
request.AutomaticDecompression = DecompressionMethods.GZip;
string username = YZHelper.UserName;
string password = YZHelper.PassWord;
request.Credentials = new NetworkCredential(username, password);
using (MemoryStream ms = new MemoryStream())
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml.InnerXml.ToString());
xmlDoc.Save(ms);
data = ms.ToArray();
}
//// ?soap ????????
WriteRequestData(request, data);
String retXml = string.Empty;
HttpWebResponse myrespones;
try
{
myrespones = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
myrespones = (HttpWebResponse)ex.Response;
}
retXml = ReadMotmResponse(myrespones); //??Webservice????
//??????
if (request != null)
{
request.Abort();
request = null;
}
if (myrespones != null)
{
myrespones.Close();
myrespones = null;
}
return retXml;
}
catch (Exception e)
{
return e.Message;
}
}
C# WebServices中处理XML方式的更多相关文章
- web.xml中配置Spring中applicationContext.xml的方式
2011-11-08 16:29 web.xml中配置Spring中applicationContext.xml的方式 使用web.xml方式加载Spring时,获取Spring applicatio ...
- web.xml 中以编码方式添加filter并设置初始化参数AbstractAnnotationConfigDispatchServletInitializer
web.xml中配置filter <?xml version="1.0" encoding="UTF-8"?> <web-app versio ...
- XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)
1.XML 格式规范: ① 必须有一个根元素 ② 不可有空格.不可以数字或.开头.大小写敏感 ③ 不可交叉嵌套 ④ 属性双引号(浏览器自动修正成双引号了) ⑤ 特殊符号要使用实体 ⑥ 注释和HTML一 ...
- Spring中的AOP注解方式和XML方式
应掌握内容:1. AOP的全名2. AOP的实现原理[静态代理和动态代理]3. 注解方式的配置4. 通知类型 A. 每种通知的特点和使用方式 B. 获取各种数据,方便日后操作5. 执行表 ...
- WebServices中Xml的序列化
一.定义序列化实体类 [System.Xml.Serialization.XmlRoot("Custome_Xml_Root_Name")] //自定义生成的Xml根目录名称 pu ...
- Spring中事务的XML方式[声明方式]
事务管理: 管理事务,管理数据,数据完整性和一致性 事务[业务逻辑] : 由一系列的动作[查询书价格,更新库存,更新余额],组成一个单元[买书业务], 当我们动作当中有一个错了,全错~ ACID 原子 ...
- C# 中参数验证方式的演变
一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...
- 用 ElementTree 在 Python 中解析 XML
用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
随机推荐
- 搭建前端私有npm杂记
随着前端队伍越来越壮大,项目间共享代码就变得尤为重要.常用的框架/类库没必要在每个项目都放一份,团队内部产出的公共模块也需要有合理的共享机制.现在,用npm管理前端代码已经是业界趋势.楼主尝试用私有n ...
- netstat
netstat再解读 C:\Users\Administrator>netstat -nb 活动连接 协议 本地地址 外部地址 状态 TCP ESTABLISHED [mysqld.exe] T ...
- failed to load the jni shared library jvm
启动eclipse luna时候出现的, 原因在于,eclipse要求jdk是 32位的, 而我本机安装的是 64的!
- Atitit 设计模式的本质思考】
Atitit 设计模式的本质思考] 1. 世界就是有模式构建的1 1.1. 多次模式与偶然模式1 1.2. 模式就是在一种场合下对某个问题的一个解决方案."1 1.3. 模式需要三样东西. ...
- GitHub iOS-Top 100 简介
GitHub排名前100的iOS第三方汇总简介,方便开发者选择适合的第三方框架. 项目名称 项目信息 1. AFNetworking 作者是 NSHipster 的博主, iOS 开发界的大神级人物, ...
- SQLyog图形化l数据库的操作和学习
1:首先SQLyog作为mysql的图形化操作工具,是一个收费的工具,但是在天朝大国,任何收费的软件都可以被破解,具体软件的安装不做多叙述,支持正版,毕竟作为一个开发人员,辛辛苦苦开发出来的软件,还指 ...
- jsdoc
一.javascript注释规范 我们在编写javascript文件的时候,一般会添加一些注释.例如一些文件.类.方法和属性都应该用合适的标记和类型进行注释.这里不但方便我们的阅读,也能养成一个好的习 ...
- 修改Credentials 密码
今天,Leader 吩咐要修改管理账户的密码,我负责的Part是修改package和 Replication的Job的密码.仔细想了下,由于我们使用的Windows验证方式,而Job在执行时,是使用P ...
- Sql Server系列:嵌套查询
嵌套查询是指一个查询语句嵌套在另一个查询语句内部的查询.嵌套查询也就子查询,在SELECT子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或多个表.子查询中可以使用比较运 ...
- sizzle分析记录:词法分析器(tokenize)
词法分析器(tokenize)? 词法分析器又称扫描器.词法分析是指将我们编写的文本代码流解析为一个一个的记号,分析得到的记号以供后续语法分析使用. sizzle引入了tokenize这个概念,意义? ...