【问题标题】:There is an error in XML document; EndElement is an invalid XmlNodeType when deserializingXML 文档有错误;反序列化时 EndElement 是无效的 XmlNodeType
【发布时间】:2013-02-19 04:37:43
【问题描述】:

考虑一个 .NET 客户端调用定义为 Web 引用的远程 XML SOAP Web 服务。客户端调用服务,并尝试将返回的 XML 反序列化为对象。

Web 方法执行正常,从服务返回的 XML 格式正确,在 Fiddler 中确认。该 Web 服务是一种已知的良好工作服务,因为我们有另一个客户端 (.NET 2.0) 毫无问题地使用它。

当 .NET Web 服务代理类尝试反序列化返回的 XML 时,会抛出此错误:

System.InvalidOperationException:XML 文档中存在错误 (1, 1999)。 ---> System.Xml.XmlException:“EndElement”是无效的 XmlNodeType。第 1 行,位置 1999。在 System.Xml.XmlReader.ReadStartElement()
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader_PRPA_AR101202_Service.Read135_MCCI_MT000200LocatedEntity(Boolean isNullable, Boolean checkType)

它抱怨的XML response 的行/列(1,1999)是</device> 中的/

<sender>
   <device>
      ..snip..
      <location classCode="IDENT" realmCode="xyz" />
   </device>

如何使用 .NET 反序列化解决此问题?

没有解决方案的尝试解决方案/更多信息:

【问题讨论】:

  • 是否有对应的(和前面的)
  • @ChrisBint 他的代码包括一个相应的和前面的 。希望 ..snip.. 不包含额外的
  • @p.campbell 是抛出的整个错误还是其中的一部分?
  • 我打开了完整的文档链接,查看原始文件,复制到 Notepad++ 并线性化缩进文本。这将其转换为一行,只有 1865 个字符。但错误出现在第 1 行,字符 1999!我怀疑文本比反序列化器预期的要少,即。缓冲区使用错误计算。能贴出反序列化代码吗?
  • 好的,所以“完整文档”实际上是“去识别的完整文档”:-)

标签: .net xml web-services xml-deserialization hl7


【解决方案1】:

我使用 .config 调整来强制 XML 序列化程序使用旧行为:

<configuration>
     <system.xml.serialization> 
        <xmlSerializer  useLegacySerializerGeneration="true" />    
     </system.xml.serialization>
</configuration>

Serialization or deserialization failures when you run existing XML serialization code in WCF 4.5

【讨论】:

  • 因此他们在 4.5 中优化了XmlSerializer,但提供了一种不使用它的方法。这是否意味着 4.5 XmlSerializer 中存在错误或 XML 有问题?
  • @groverboy 确定我反序列化的 XML 是有效的。这是一个新客户端正在使用的现有工作 WS。所以你遇到了一个很好的问题:他们为什么要保留传统交换机?另一部分是假定特定对象模型的 Web 参考。也许“旧式”WR 期望的输入不同于 4.5 版“新”序列化器可以输出的输入。我很高兴这是一个解决了我的问题的配置设置。
【解决方案2】:

stacktrace 的第二行表明 xml 处理器期望在第二个 device 元素内有一个元素 locatedEntity。最早可以推断出不会有这样的元素的位置是所述device元素的结束标记。

查看命名空间"urn:hl7-org:v3" 的架构文档;也许location 被错误地使用而不是locatedEntity

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多