【问题标题】:XmlReaderParsingException: The start element with name <...> and namespace "http..." was unexpectedXmlReaderParsingException:名称为 <...> 和命名空间“http...”的起始元素是意外的
【发布时间】:2013-07-19 19:12:42
【问题描述】:

这是针对 BizTalk 2010 的。我遇到了一个非常奇怪的问题,我无法使用我最喜欢的搜索引擎的结果或其他地方找到解决方案。

我向 BizTalk 添加了几个 SQL Server 2008 表架构。设置编排和映射没有任何问题。 BizTalk 能够使用 WCF_Custom SQL Adapter 使用 XML/BTSAction 将数据插入到 XML 中标识的 SQL 表中。

其中一些表的数据插入得很好,除了两个。两者都有相同的错误。错误是从第三个表的命名空间中提取的。这是完整的错误 - 请注意,命名空间 ns 是预期的 ns46:professionalAddendum,但不知何故,BizTalk 正在从不同的表中提取不同的命名空间 ns35:

Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException:名称为“ClaimFilingIndicatorCode”和命名空间“http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/professionalCOBAdjustmentsAncillary”的起始元素是意外的。请确保您的输入 XML 符合操作的架构。

<ns2:Insert xmlns:ns2="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/professionalAddendum">
  <ns2:Rows>
    <ns46:professionalAddendum xmlns:ns46="http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">
      <ns46:uid_claim>1b8f20e9-0517-4f00-9ee2-99d5f04d1573</ns46:uid_claim>
ERROR>>>>>   <ns35:ClaimFilingIndicatorCode xmlns:ns35="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/professionalCOBAdjustmentsAncillary">17</ns35:ClaimFilingIndicatorCode>
      <ns46:ClaimFrequencyTypeCode>1</ns46:ClaimFrequencyTypeCode>
      <ns46:ProviderAcceptAssignmentCode>B</ns46:ProviderAcceptAssignmentCode>
      <ns46:BenefitsAssignmentCertificationIndicator>Y</ns46:BenefitsAssignmentCertificationIndicator>
      <ns46:ReleaseofCode>Y</ns46:ReleaseofCode>
      <ns46:ProviderOrSupplierSignatureIndicator>N</ns46:ProviderOrSupplierSignatureIndicator>
    </ns46:professionalAddendum>
  </ns2:Rows>
</ns2:Insert>

有没有办法解决这个问题?真奇怪。

谢谢大家!

【问题讨论】:

  • 根据 Schellack 的回答,任何与 XSD 的轻微偏差都可能导致此问题。 This post 描述了一种抓取 BTS 尝试发送的 xml 消息的方法,然后可以针对 XSD 进行验证。
  • StuartLC,感谢您的回复。我删除了每一个 TableOperation 模式,并通过 Add Generated Item -> Consume Adapter Service 重新导入它们,然后重建了一个列出每个表的主表模式。我仍然遇到同样的问题——这次不同的命名空间编号。有趣的是,较早的块具有正确的命名空间 # 用于 ClaimFilingIndicatorCode,但随后与后续块更改为不同的命名空间,然后是第三个块,它会恢复为正确的命名空间......等等。很奇怪。以前从未见过。

标签: sql-server-2008 biztalk biztalk-2010


【解决方案1】:

如果没有看到完整的架构,很难确切地知道发生了什么,但我已经看到表名的大小写在某个地方发生了变化,然后相应的命名空间不再匹配。

例如:
@987654321@ 对比 @987654322@

【讨论】:

  • 我通过从 BizTalk 中删除第三个表来更新项目。通过找到另一个表来提取该特定字段仍然失败。我还在调查中……
  • 如果您仍然收到有关无法识别命名空间的错误,也许您可​​以手动编辑表操作的架构并在那里定义命名空间?
  • schellack,有趣的是,当我从项目中删除“新模式”时(我还有其他一些模式),它运行良好。我向 BizTalk 介绍的任何新表都会得到上述结果。
【解决方案2】:

我正在发布我发现的内容。地图和编排在大多数情况下都很好。映射器中有一个 Scripting functoid,它使用内联 XSLT 从源模式映射到目标模式,而有问题的命名空间位于该 XSLT 代码中。当我更改架构的表时,它们对应的命名空间#s 也发生了变化,从而导致了这个问题的表现。话虽如此,如果模式表的命名空间#s 再次更改,我将其修复为灵活。

问题解决了。现在我必须修复其中的一些。 :)

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多