导航

使用通用XmlDocument构造特定XSD Message的要点

Posted on 2008-03-19 17:50  鸡尾虾的壳  阅读(304)  评论(0编辑  收藏  举报
构造xsd message的方法有三种:使用btm, 使用同类型的消息赋值,使用XmlDocument构造。

使用通用XmlDocument构造特定XSD Message是在Message Assign Shape中实现的。假设如果需要构造CommonCallResponse xsd类型的消息,实例代码如下:
Msg_WSResponse=Var_WSIOrchHelper.ConstructCommonCallResponseMsg( );
Msg_WSResponse.WebResponseDTO.DateTimeStamp=System.DateTime.Now;
Msg_WSResponse.WebResponseDTO.ReturnCode="1";
Msg_WSResponse.WebResponseDTO.ReturnDescription="0";

ConstructCommonCallResponseMsg( )的范例实现如下:
 public XmlDocument ConstructCommonCallResponseMsg( )
        {
            string emptyCommonCallResponseMsgStr = "<ns0:CommonCallResponse xmlns:ns0=\"http://www.oocllogistics.com/ws/\"><ns0:WebResponseDTO><ns0:DateTimeStamp>2000-05-31T13:20:00.000-05:00</ns0:DateTimeStamp><ns0:ReturnCode>0</ns0:ReturnCode><ns0:ReturnDescription>desc</ns0:ReturnDescription></ns0:WebResponseDTO></ns0:CommonCallResponse>";
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(emptyCommonCallResponseMsgStr);
            return xmlDoc;
        }

Msg_WSResponse是Orchestration视图中定义的CommonCallResponse类型的消息。在CommonCallResponse xsd中,把DateTimeStamp,ReturnCode,WebResponseDTO三个子元素promote为独特域,这样才能保证开发者可以在消息上进行赋值。

ConstructCommonCallResponseMsg( )的要点在于emptyCommonCallResponseMsgStr变量的定义:首先,xmlns:ns0的值必须与xsd的命名空间一致,这样才可以保证从通用类型到特定类型转换过程中MessageType的一致性问题;其次,该变量必须包含待赋值的独特域,否则运行时会抛出两者不匹配的异常。