如何将XmlDocument转换为XLANGMessage类型

本文关键字:XLANGMessage 类型 转换 XmlDocument | 更新日期: 2023-09-27 18:10:11

如何将XmlDocument转换为XLANGMessage类型?
我试过下面的方法,下面两个方法抛出错误:"Cannot implicit convert XmlDocument to XLangMessage…"

有其他的想法,请分享。

TRY1——

public XLANGMessage convertToXlandMsgFromXml(XmlDocument tempInput)
{
    XLANGMessage sampleOutput;            
    tempInput.Load(@"InputMessage.xml");            
    XLANGMessage sampleOutput = tempInput;            
}  

TRY2——

public class FileStreamFactory : IStreamFactory
{
    string _fname;
    public FileStreamFactory(string fname)
    {
        _fname = fname;
    }
    public Stream CreateStream()
    {
        return new FileStream
               (
                _fname,
                FileMode.Open,
                FileAccess.Read,
                FileShare.Read
               );
    }
    }  
    public static void AssignStreamFactoryToPart(XLANGMessage msg)
    {
        IStreamFactory sf = new FileStreamFactory( @"c:''data.xml" );
        msg[0].LoadFrom( sf );
    }
}

如何将XmlDocument转换为XLANGMessage类型

您应该查看此链接(最后一部分):http://blogs.msdn.com/b/paolos/archive/2009/09/10/4-different-ways-to-process-an-xlangmessage-within-an-helper-component-invoked-by-an-orchestration.aspx

创建自定义类型,例如CustomBTXMessage

  [Serializable]
    public sealed class CustomBTXMessage : BTXMessage
    {
        public CustomBTXMessage(string messageName, Context context)
            : base(messageName, context)
        {
            context.RefMessage(this);
        }
    }
然后,您可以从该类型创建一个对象,并将xml加载到主体部分。
var customBTXMessage = new CustomBTXMessage("XLANGMessage", Service.RootService.XlangStore.OwningContext);
customBTXMessage.AddPart(string.Empty, "Body");

我会将xml文档作为流加载然后你可以从流中加载body部分

customBTXMessage[0].LoadFrom(stream);

这部分代码将返回一个XLANGMessage

 var responseMessage = customBTXMessage.GetMessageWrapperForUserCode();

好运。

乔纳森