2013-10-25 2 views
0

필자는 Delphi 7 코드를 Delphi XE4로 마이그레이션했습니다. 델파이 XE4에서 LoadFromStram 방법에 오류가 발생하고 있지만, 같은 델파이 7에 대한EDOMParseError in Delphi XE4

오류 잘 작동한다 : 나는 uses 절에 해당 xmldoc, XMLIntf, XMLDOM을 사용하고

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); 

.

+1

'Position' 스트림을 0으로 설정 했습니까? – TLama

+0

@TLama - 위치를 지정하려면? –

+2

예 : 'myStream.Position : = 0;',하지만 당신의 문제 일 필요는 없습니다. Chris가 지적한대로 그 스트림은 비어있을 수 있습니다. 'myStream.Size' 속성을 평가할 수 있는지 확인할 수 있습니다. 0이면 빈 스트림이 생겨 유효하지 않은 XML이 생깁니다. – TLama

답변

2

스트림이 비어 있습니다 (잘못된 파일에서로드했거나 스트림을 채우는 방법을 알려주는 코드가 충분하지 않음). 또는 TLama가 지적한대로 재설정하지 않았습니다. 처음. 즉 seek (0);

+2

관련 노트에서 SOAP 문제를 해결할 때이 스레드를 찾는 모든 사용자는 빈 SOAP 응답을 처리 할 때이 오류를 얻는 것이 일반적입니다. 이것은 대개 시간 초과로 인해 발생합니다 (대상 시스템이 응답하는 데 오랜 시간이 걸렸습니다). 따라서 Delphi는 응답을 기다리지 않고 응답 XML을 비워 둡니다. 그런 다음 매우 도움이되지 않는 'XML 문서에는 최상위 요소가 있어야 함'메시지가 표시됩니다. –

관련 문제