【问题标题】:output of map adds byte order marks to the xmlmap 的输出将字节顺序标记添加到 xml
【发布时间】:2013-03-18 22:53:19
【问题描述】:

我有一个地图,它为我构建了一条消息,然后将其传递给另一个地图(所有这些都在一个编排中。

检查第一个映射的消息输出,我可以看到该消息包含 EF BB BF 字节顺序标记。

第二个map执行时,抛出异常“根级别的数据无效。第1行,位置61。”:

xlang/s 引擎事件日志条目:未捕获的异常(参见 'inner 例外'下面)已暂停服务实例 'MyCompany.MyOrchestration(004464ca-1c34-e342-591d-5e8182a4be18)'。
服务实例将保持暂停状态,直到管理 恢复或终止。
如果恢复,实例将从其继续 最后持久的状态,并可能重新抛出相同的意外异常。
InstanceId:62d99333-8dc4-4ca4-9e5b-7fdf8583e081 形状名称:conCDA
ShapeId: ba722b56-c115-4abb-b40c-211824369266
抛出异常: 段 1,进度 15
内部异常:根级别的数据是 无效的。第 1 行,位置 61。

异常类型:XmlException
来源:System.Xml
目标站点:Void Throw(System.Exception) 以下是堆栈跟踪 标识异常发生的位置

在 System.Xml.XmlTextReaderImpl.Throw(Exception e)
在 System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
在 System.Xml.XmlTextReaderImpl.ParseDocumentContent()
在 System.Xml.XmlTextReaderImpl.Read()
在 System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
at System.Xml.XmlLoader.Load(XmlDocument 文档,XmlReader 阅读器,布尔值 preserveWhitespace)
在 System.Xml.XmlDocument.Load(XmlReader 阅读器)
在 System.Xml.XmlDocument.Load(TextReader txtReader)
在 Microsoft.XLANGs.Core.Service.Transform.ShredXmlDocument(流 inStream, Object[] outParams, String mapName, XmlDeclaration xmlDecl)
在 Microsoft.XLANGs.Core.Service.ApplyInMemoryTransform(类型 mapRef, TransformMetaData trfMetaData, Object[] outParams, Stream[] inStreams)
在 Microsoft.XLANGs.Core.Service.ApplyTransform(Type mapRef, Object[] outParams, Object[] inParams)
在 MyCompany.MyOrchestration.segment1(停止条件 stopOn)
在 Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)

如何让第一张地图不添加字节顺序标记?

编辑: 第一个映射是一个映射,在输入端有两条消息,它们映射到输出端的一条消息。第一条消息使用结构链接映射所有节点,第二条消息使用大量复制功能。即使在字节级别查看消息,我在字符 61 处也看不到任何有趣的字符。我可以看到 BOM,这就是为什么我认为这是问题所在。

【问题讨论】:

    标签: biztalk biztalk-2010 biztalk-mapper


    【解决方案1】:

    我不完全确定这是一个 BOM 问题 - 您还没有明确说明您是如何创建地图的(即您是否有自定义功能,您是否使用 XSLT 等)您能确认一下是什么角色吗? (或周围)字符 61 - 它是 Reserved Xml Markup Characters 之一吗?

    或者,您是否检查过您调用的第一个映射在使用 VS 解决方案资源管理器中的“测试映射”工具运行时产生有效输出?您是否将 'Validate TestMap Input' 和 'Validate TestMap Output' 选项设置为 TRUE 并且它不会引发任何错误?另外,您是否尝试过保存第一个地图测试的输出并将其用作第二个地图测试的输入?

    【讨论】:

    • 第一个映射是一个映射,它在输入端有两条消息,它们映射到输出端的单条消息。第一条消息使用结构链接映射所有节点,第二条消息使用大量复制功能。即使在字节级别查看消息,我在字符 61 处也看不到任何有趣的字符。我可以看到 BOM,这就是为什么我认为这是问题所在。
    • BOM 字符可能会引起问题并将字符推到第 61 个字符,但我以前从未遇到过这种情况。如果您从输出中剥离 BOM 并尝试使用测试地图功能会发生什么?
    • 你是对的!这不是 BOM 问题。问题是我的一个模式中的命名空间更改导致我的地图中使用的自定义 xslt 输出非 xml 内容。错误实际上是在地图的输出(无效的 xml)上而不是在输入消息上。
    • 您愿意将此标记为答案还是更新您的原始问题以包含修复?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2014-12-24
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多