BizTalk 2009的HL7消息中的新行问题

时间:2012-04-23 11:56:41

标签: xml map biztalk hl7

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

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

我尝试了以下方法:

1。地图 •orch中收到的XML消息通过使用相同的模式转换为另一个XML消息。我们尝试在地图中使用不同的方法。 o如果输入字段由\ r \ n值组成,则脚本functoid用于指定空值。要么 o XSLT用于通过检查输入字段OR中的值将输入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;
    }

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

由于

1 个答案:

答案 0 :(得分:0)

我对你的问题有点困惑,但如果我理解正确,你需要删除可能在XML元素中的新行序列。我会尝试在管道组件中构建预处理器(编码/解码),然后在业务流程中的消息类型上标识和标记消息类型。您对管道中的消息的管理级别低于业务流程中的消息。如果可能的话,我不建议在业务流程中进行这种类型的XML操作,但如果你需要在业务流程中进行,我会按照概述here在XSLT中进行。希望有所帮助。