【问题标题】:New line issue in HL7 message of BizTalk 2009BizTalk 2009 的 HL7 消息中的新行问题
【发布时间】:2012-05-04 00:52:35
【问题描述】:

我必须用我的 XML 作为输入消息来生成 HL7 消息。我在这里面临一些不同的情况。

问题:如果我们在输入 XML 消息的某些字段中收到“Enter” (\r\n) 字符。最终的 HL7 文件在 HL7 消息中使用该字段的地方中断。这使得 HL7 消息无效,因此我们的目标系统拒绝该消息。

我尝试了以下方法:

1.地图 • orch 中接收到的 XML 消息使用相同的模式转换为另一个 XML 消息。我们尝试在地图中遵循不同的方式。 o 如果输入字段由\r\n 值组成,则脚本functoid 用于分配空值。要么 o XSLT 用于通过检查输入字段中的值将输入 XML 消息转换为输出或 o 简单的一对一映射用于将输入 XML 消息转换为输出 XML 消息

输出 • 使用上述三种方法,输出 XML 消息仅为 NULL。

2。类库 • orch 中接收的XML 消息作为输入传递给C# 函数。 • 请找到以下代码:

输出 o 该函数的输出 XML 没有换行符 (\r\n)。但最终的 HL7 消息仅在该字段中断。

public static XmlDocument RemoveNewLineCharacters(XLANGMessage msg) { XmlDocument xmlDoc =(XmlDocument)msg[0].RetrieveAs(typeof(XmlDocument));

        XmlDocument XmlIndentedMessage = new XmlDocument();

        string IndentedMessage = string.Empty;
        StringBuilder StrBldr = new StringBuilder();

        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Encoding = Encoding.UTF8;
        settings.Indent = true;

        xmlDoc.PreserveWhitespace = false;

        XmlWriter writer;

        writer = XmlWriter.Create(StrBldr, settings);

        xmlDoc.Save(writer);

        IndentedMessage = StrBldr.ToString();

        XmlIndentedMessage.LoadXml(IndentedMessage);

        writer.Close();

        return XmlIndentedMessage;
    }

非常感谢任何解决此问题的帮助。

谢谢

【问题讨论】:

    标签: xml map biztalk hl7


    【解决方案1】:

    我对您的问题有点困惑,但如果我理解正确,您需要删除可能在 XML 元素中的新行序列。在消息类型被识别并在编排中的消息上下文上标记之前,我将尝试在管道组件中构建预处理器(编码/解码)。与编排相比,您对管道中的消息具有更低级别的控制。如果可能的话,我不建议在编排中进行这种类型的 XML 操作,但如果您需要在编排中进行,我会在 XSLT 中进行,如here 所述。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多