XML文档中存在错误;反序列化时,EndElement是无效的XmlNodeType

时间:2013-03-04 22:44:20

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

考虑将.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反序列化解决此问题?

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

2 个答案:

答案 0 :(得分:0)

堆栈跟踪的第二行表明xml处理器期望第二个locatedEntity元素中的元素device。可以推断出没有这样的元素的最早位置是所述device元素的结束标记。

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

答案 1 :(得分:0)

我使用.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