【问题标题】:How to convert a XmlDocument to a XLANGMessage type?如何将 XmlDocument 转换为 XLANGMessage 类型?
【发布时间】:2014-06-25 15:49:10
【问题描述】:

如何将 XmlDocument 转换为 XLANGMessage 类型?
我尝试过以下方法, 以下两种方法会引发错误:“无法将 XmlDocument 隐式转换为 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 );
    }
}

【问题讨论】:

    标签: c# .net xml c#-4.0 type-conversion


    【解决方案1】:

    你应该检查这个链接(最后一部分):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

    创建自定义类型,例如自定义BTXMessage

      [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 文档作为流加载,而您可以从该流中加载正文部分

    customBTXMessage[0].LoadFrom(stream);
    

    这部分代码会返回一个 XLANGMessage

     var responseMessage = customBTXMessage.GetMessageWrapperForUserCode();
    

    祝你好运。

    乔纳森

    【讨论】:

    • 是的!谢谢你,乔纳森! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2014-05-15
    相关资源
    最近更新 更多