下面用到的是常見的操作,當然也可以封閉到一個類中。(實際上網上也確實有這個的代碼)
<?xml version="1.0" encoding="utf-8"?>
<ProvBOSS>
<BIPCode>BIP9B985</BIPCode>
<BIPVer>0100</BIPVer>
<ActivityCode>T9000985</ActivityCode>
<ActionCode>0</ActionCode>
<ProcID></ProcID>
<TransIDO></TransIDO>
<ProcessTime></ProcessTime>
<TestFlag>1</TestFlag>
<MsgSender></MsgSender>
<MsgReceiver></MsgReceiver>
<SvcContVer>0100</SvcContVer>
<SvcCont>
<![CDATA[
<BizProcReq>
<OprNumb>21542</OprNumb>
<MSISDN>13800000000</MSISDN>
<IMSI>235625485</IMSI>
<OprCode>06</OprCode>
<EfftTime>20081122000000</EfftTime>
<Extra></Extra>
</BizProcReq>
]]>
</SvcCont>
</ProvBOSS>
//載入為XML文檔
XmlDocument Xml = new XmlDocument();
Xml.LoadXml(ReqData);
XmlNode root = Xml.SelectSingleNode("/ProvBOSS");
#region 請求處理過程
//更改交易動作代碼 0:請求,1:應答
XmlNode actioncode = Xml.SelectSingleNode("/ProvBOSS/ActionCode");
actioncode.InnerText = "1";
//添加落地方交易流水號
XmlElement TransIDH = Xml.CreateElement("TransIDH");
TransIDH.InnerText = DateTime.Now.ToString("yyyyMMddHHmmss");
XmlNode TransIDO = Xml.SelectSingleNode("/ProvBOSS/TransIDO");
root.InsertAfter(TransIDH, TransIDO);
//更改應答方處理請求的時間
XmlNode ProcessTime = Xml.SelectSingleNode("/ProvBOSS/ProcessTime");
ProcessTime.InnerText = DateTime.Now.ToString("yyyyMMddHHmmss");
//建立 應答/錯誤資訊
XmlElement RspType = Xml.CreateElement("RspType");
XmlElement RspCode = Xml.CreateElement("RspCode");
XmlElement RspDesc = Xml.CreateElement("RspDesc");
XmlElement ResponseNode = Xml.CreateElement("Response");
ResponseNode.AppendChild(RspType);
ResponseNode.AppendChild(RspCode);
ResponseNode.AppendChild(RspDesc);
RspType.InnerText = "0";
RspCode.InnerText = "0000";
RspDesc.InnerText = "Success";
root.InsertAfter(ResponseNode, ProcessTime);
////////////////////////////////////
//請求/應答內容
////////////////////////////////////
XmlNode SvcCont = Xml.SelectSingleNode("/ProvBOSS/SvcCont");
if (SvcCont.FirstChild.NodeType == XmlNodeType.CDATA)
{
//擷取ServiceContent中的值
XmlDocument xmlSvcCont = new XmlDocument();
xmlSvcCont.LoadXml(SvcCont.FirstChild.Value);
string OprNumb = xmlSvcCont.SelectSingleNode("BizProcReq/OprNumb").InnerText;
string MSISDN = xmlSvcCont.SelectSingleNode("BizProcReq/MSISDN").InnerText;
string IMSI = xmlSvcCont.SelectSingleNode("BizProcReq/IMSI").InnerText;
string OprCode = xmlSvcCont.SelectSingleNode("BizProcReq/OprCode").InnerText;
string EfftTime = xmlSvcCont.SelectSingleNode("BizProcReq/EfftTime").InnerText;
//建立響應報文體
XmlElement OprNumbNode = Xml.CreateElement("OprNumb");
XmlElement MSISDNNode = Xml.CreateElement("MSISDN");
XmlElement EfftFlagNode = Xml.CreateElement("EfftFlag");
XmlElement RsltNode = Xml.CreateElement("Rslt");
XmlElement BizProcRsp = Xml.CreateElement("BizProcRsp");
BizProcRsp.AppendChild(OprNumbNode);
BizProcRsp.AppendChild(MSISDNNode);
BizProcRsp.AppendChild(EfftFlagNode);
BizProcRsp.AppendChild(RsltNode);
OprNumbNode.InnerText = OprNumb;
MSISDNNode.InnerText = MSISDN;
EfftFlagNode.InnerText = "0";
RsltNode.InnerText = "";
//DB操作
try
{
//
}
catch (Exception ex)
{
}
//修改ServiceContent的值,以返迴響應報文
SvcCont.FirstChild.Value = BizProcRsp.OuterXml;
}
else
{
//報文頭裡的
RspType.InnerText = "1";
RspCode.InnerText = "0004";
RspDesc.InnerText = "Service Content報文格式不正確";
}
#endregion
//返回資料給BOSS
ResData = Xml.OuterXml;