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方式的更多相关文章

  1. web.xml中配置Spring中applicationContext.xml的方式

    2011-11-08 16:29 web.xml中配置Spring中applicationContext.xml的方式 使用web.xml方式加载Spring时,获取Spring applicatio ...

  2. web.xml 中以编码方式添加filter并设置初始化参数AbstractAnnotationConfigDispatchServletInitializer

    web.xml中配置filter <?xml version="1.0" encoding="UTF-8"?> <web-app versio ...

  3. XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)

    1.XML 格式规范: ① 必须有一个根元素 ② 不可有空格.不可以数字或.开头.大小写敏感 ③ 不可交叉嵌套 ④ 属性双引号(浏览器自动修正成双引号了) ⑤ 特殊符号要使用实体 ⑥ 注释和HTML一 ...

  4. Spring中的AOP注解方式和XML方式

    应掌握内容:1. AOP的全名2. AOP的实现原理[静态代理和动态代理]3. 注解方式的配置4. 通知类型     A. 每种通知的特点和使用方式    B. 获取各种数据,方便日后操作5. 执行表 ...

  5. WebServices中Xml的序列化

    一.定义序列化实体类 [System.Xml.Serialization.XmlRoot("Custome_Xml_Root_Name")] //自定义生成的Xml根目录名称 pu ...

  6. Spring中事务的XML方式[声明方式]

    事务管理: 管理事务,管理数据,数据完整性和一致性 事务[业务逻辑] : 由一系列的动作[查询书价格,更新库存,更新余额],组成一个单元[买书业务], 当我们动作当中有一个错了,全错~ ACID 原子 ...

  7. C# 中参数验证方式的演变

    一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...

  8. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

  9. .net中创建xml文件的两种方法

    .net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...

随机推荐

  1. 利用JNI技术在Android中调用、调试C++代码

    参考:http://blog.micro-studios.com/?p=4212 代码:http://pan.baidu.com/s/1sjukSDf

  2. 性能计数器与profiler的组合性能诊断

    性能计数器和sql profiler都是常用的性能诊断工具和优化工具,最近和群友聊天发现很多人竟然不知道这两个可以“组合”使用,所以这篇算是一篇扫盲贴吧. 两种工具简述 通过计数器可以收集两部分内容: ...

  3. CSS选择器小结

    在CSS3中是提倡使用选择器来将样式与元素直接绑定在一起的. 网页开发过程中,我们需要定义很多class来应用到不同的元素上,由于class本身是没有语义而且是可以复用的,所以过度使用class会使得 ...

  4. WPF - 属性系统 (1 of 4)

    本来我希望这一系列文章能够深入讲解WPF属性系统的实现以及XAML编译器是如何使用这些依赖项属性的,并在最后分析WPF属性系统的实际实现代码.但是在编写的过程中发现对WPF属性系统代码的讲解要求之前的 ...

  5. Unit Testing with NSubstitute

    These are the contents of my training session about unit testing, and also have some introductions a ...

  6. Android属性动画源代码解析(超详细)

    本文假定你已经对属性动画有了一定的了解,至少使用过属性动画.下面我们就从属性动画最简单的使用开始. ObjectAnimator .ofInt(target,propName,values[]) .s ...

  7. Apache Mina实战

    Mina介绍 Mina可以用于快速的开发基于网络通信的应用,特别是在开发手机端的游戏应用时,使用的较为普遍.本文简单介绍了一个用Mina搭建的一个简易讨论组,通过该应用可以对Mina的基本用法用途有个 ...

  8. 在浏览器的背后(二) —— HTML语言的语法解析

    当你看到这篇文章意味着我辜负了@教主的殷切期望周末木有去约会,以及苏老师@我思故我在北京鼓楼的落井下石成功了…… 本文demo powered by 已经结婚的@老赵的不再维护的wind.js 物是人 ...

  9. 学习Cassandra的开源电子书(中英文版)

    学习Cassandra的开源电子书(中英文版)发布啦:http://teddymaef.github.io/learncassandra/ 之前发布了英文版,现在包含中文版了. 学习Cassandra ...

  10. Hibernate框架搭建实例

    一,Hibernate是一个持久层,是一个专门负责管理数据库连接的框架: 二,Hibernate的搭建实例: 1.在Hibernate的官方网站(http://www.hibernate.org)可以 ...