3

考虑一个 .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 响应的行/列 (1,1999)是/in </device>

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

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

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

4

2 回答 2

1

堆栈跟踪的第二行表明 xml 处理器需要locatedEntity第二个元素内的device元素。可以推断出不会有这样的元素的最早位置是该元素的结束标记device

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

于 2013-03-07T17:16:59.767 回答
0

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

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

在 WCF 4.5 中运行现有 XML 序列化代码时序列化或反序列化失败

于 2013-03-07T21:15:02.397 回答