System.String 的发送消息正在换行 xml

Send message of System.String is wrapping xml

我有一个简单的 odx,它构造 System.String 类型的消息,然后通过发送端口推出。

输出消息的内容很好,只是它的前缀是:

<?xml version="1.0"?>
<string>

例如

<?xml version="1.0"?>
<string>
Good plain text format here

如何在不求助于自定义管道组件的情况下防止内容被包裹?

将字符串直接写入辅助库中的 XLANGMessage(就像将二进制数据写入消息一样),并确保使用直通传输管道。我不确定这是否适用于 System.String 消息,但我知道它适用于 XmlDocument 消息。

例如

public static void LoadXLANGMsgFromString(string source, XLANGMessage dest)
{
    var bytes = Encoding.UTF8.GetBytes(source);
    using (MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length, false, true))
    {
        dest[0].LoadFrom(ms);
    }
}

您需要使用 MemoryStream 的构造函数来确保公开基本数据流以供 XLANG 使用。然后,在 Orchestration 消息分配形状中:

msg = new System.Xml.XmlDocument();
Helper.LoadXLANGMsgFromString("Good plain text format here", msg);

Orchestration 预计仅适用于 xml 类型化或非类型化。对于字符串类型,它会自动在其上创建一个 xml 包装器。我想不会有任何办法解决,除非你想使用自定义发送管道组件在写入之前取出xml标签。