【问题标题】:EDOMParseError in Delphi XE4Delphi XE4 中的 EDOMParseError
【发布时间】:2013-11-04 17:37:43
【问题描述】:

我将我的 Delphi 7 代码迁移到 Delphi XE4。我在 Delphi XE4 中的 LoadFromSram 方法中遇到错误,但在 Delphi 7 中同样可以正常工作。

错误:

First chance exception at $7559C41F. Exception class EDOMParseError with message
'XML document must have a top level element.

Line: 0
'.
Process abc.exe (10516)


var
myStream : TStream;
....
....
LoadFromStream(myStream);

我在 uses 子句中使用 XMLDoc、XMLIntf、XMLDOM。

【问题讨论】:

  • 你把Position的流设为0了吗?
  • @TLama - 在哪里指定位置?
  • 使用例如myStream.Position := 0;,但这不一定是你的问题。正如克里斯指出的那样,该流可以是空的。您可以检查是否评估 myStream.Size 属性。如果它是 0,那么你有一个空流,因此是一个无效的 XML。
  • @TLama - 位置已设置为 0。在 Delphi 7 中加载相同的 XML 时,xml 大小不为零,但从 Delphi XE4 代码中加载相同的 xml,xml 大小变为零。可能是什么原因?
  • 对不起,我完全不知道。我不知道你如何填充那个流。我怀疑这与 ANSI/Unicode 迁移有关,但这只是一个疯狂的猜测。

标签: delphi delphi-7 delphi-xe4


【解决方案1】:

您的流要么是空的(比如您从无效文件加载,或者其他什么,您没有提供足够的代码来告诉我们您如何填充流),或者正如 TLama 指出的那样,您没有重置为开始。即寻求(0);

【讨论】:

  • 在相关说明中,任何人在对 SOAP 问题进行故障排除时发现此线程,在处理空 SOAP 响应时通常会收到此错误。这通常是由超时引起的(目标系统需要很长时间才能响应),因此 Delphi 放弃等待响应,因此响应 XML 为空/nil。然后,您会收到非常无用的“XML 文档必须有顶级元素”消息。
猜你喜欢
  • 2013-05-09
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
相关资源
最近更新 更多