【发布时间】: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 反序列化解决此问题?
没有解决方案的尝试解决方案/更多信息:
- 从 .NET 4 移动到 4.5,希望在最新的
System.Xml中看到任何修复 - de-identified response document being deserialized
- full stack trace
【问题讨论】:
-
是否有对应的(和前面的)
? -
@ChrisBint 他的代码包括一个相应的和前面的
。希望 ..snip.. 不包含额外的 -
@p.campbell 是抛出的整个错误还是其中的一部分?
-
我打开了完整的文档链接,查看原始文件,复制到 Notepad++ 并线性化缩进文本。这将其转换为一行,只有 1865 个字符。但错误出现在第 1 行,字符 1999!我怀疑文本比反序列化器预期的要少,即。缓冲区使用错误计算。能贴出反序列化代码吗?
-
好的,所以“完整文档”实际上是“去识别的完整文档”:-)
标签: .net xml web-services xml-deserialization hl7