C# Webservice返回指定的xml格式

最近在做项目的时候遇到需要与客户的组织信息资料进行webservice对接,需要用客户指定的xml格式。

格式如下:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
   <soapenv:Body>
   <ns1:getABSByEmplidAndMonthResponse xmlns:ns1="websercxf"> 
       <return>
      <message>success</message>
      <status>200</status>
       <result>
        <EMPLID>XXX</EMPLID>
       <GPFR_RATE1>XXX</GPFR_RATE1>
       <GPFR_RATE2>XXX</GPFR_RATE2>
       <GPFR_RATE3>XXX</GPFR_RATE3>
       <GPFR_RATE4>XXX</GPFR_RATE4>
       <MEALS_SUB>XXX</MEALS_SUB>
       </result>
       </return>
      </ns1:getABSByEmplidAndMonthResponse>
   </soapenv:Body>
</soapenv:Envelope>  

C# webservice 写法

注意:soap.Append拼接的字段里面不能有多余的空格

  private string _returnstr(string message, string status, DataTable dt)
        {
            StringBuilder soap = new StringBuilder(); //构造请求报文  
            soap.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\">");
            soap.Append("<soapenv:Body>");
            soap.Append("<ns1:getABSByEmplidAndMonthResponse xmlns:ns1='websercxf'>");
            soap.Append("<return>");
            soap.AppendFormat("<message>{0}</message>", message);
            soap.AppendFormat("<status>{0}</status>", status);
            if (status == "200")
            {
                soap.Append("<result>");
                soap.AppendFormat("<EMPLID>{0}</EMPLID>", dt.Rows[0][0].ToString());
                soap.AppendFormat("<GPFR_RATE1>{0}</GPFR_RATE1>", dt.Rows[0][1].ToString());
                soap.AppendFormat("<GPFR_RATE2>{0}</GPFR_RATE2>", dt.Rows[0][2].ToString());
                soap.AppendFormat("<GPFR_RATE3>{0}</GPFR_RATE3>", dt.Rows[0][3].ToString());
                soap.AppendFormat("<GPFR_RATE4>{0}</GPFR_RATE4>", dt.Rows[0][4].ToString());
                soap.AppendFormat("<MEALS_SUB>XXX</MEALS_SUB>", dt.Rows[0][5].ToString());
                soap.AppendFormat("<GPFR_RATE6>{0}</GPFR_RATE6>", dt.Rows[0][6].ToString());
                soap.AppendFormat("<BUS_MEALS_SUB>{0}</BUS_MEALS_SUB>", dt.Rows[0][7].ToString());
                soap.Append("</result>");
            }
            soap.Append("</return>");
            soap.Append("</ns1:getABSByEmplidAndMonthResponse>");
            soap.Append("</soapenv:Body>");
            soap.Append("</soapenv:Envelope>");
            String requestSoap = soap.ToString();
            return requestSoap;

        }
 [WebMethod]
        public XmlDocument _getAttendanceMonthData(string employeeid, string year, string month)
        {
            string xmlstr = getData(employeeid, year, month);
            XmlDocument XmlDoc = new XmlDocument();
            XmlDoc.LoadXml(xmlstr);
            return XmlDoc;
        }

说明:

getData方法是将数据从数据库中搜出来,并将datatable 传给_returnstr进行拼接,并返回

因此才有:

string xmlstr = getData(employeeid, year, month);

然后在用XmlDocument接收数据,并在接口中返回XmlDocument类型的数据





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值