Fehler beim laden gültig ist Windows-1252-Dokument "System-Fehler: -2146697210"

Irgendwie, manchmal ist der code unten erzeugt einen Fehler beim laden von gültigen Windows-1252 XML.

Es schlägt auf Windows XP Professional x86 SP3 mit MSXML6.

Gelingt es, auf Windows 7 Ultimate x64 SP1 mit MSXML6.

Hinweis: der untenstehende code ist in Delphi geschrieben, aber gleichwertigen code auch nicht in anderen Umgebungen.

procedure TXMLEOSErrorTestCase.Test;
var
  XmlDocument: IXMLDOMDocument3;
  XmlFileName: string;
begin
  XmlDocument := CoFreeThreadedDOMDocument60.Create();
  XmlFileName :=  TPath.Combine(TPath.GetDirectoryName(ParamStr(0)), '1-Normal.xml');
  if not XmlDocument.load(XmlFileName) then
    Parse(XmlDocument.parseError);
end;

Dieser Fehler tritt auf, während der XmlDocument.load-Methode:

reason: System error: -2146697210.
errorCode: -2146697210
url: C:\temp\1-Normal.xml

Ich getrimmt die XML-unten, um die XML-unten gefunden.

Dies ist der hex-dump der XML-Datei:

000000: 3C 3F 78 6D 6C 20 76 65  72 73 69 6F 6E 20 3D 20 <?xml version =
000010: 22 31 2E 30 22 20 65 6E  63 6F 64 69 6E 67 3D 22 "1.0" encoding="
000020: 57 69 6E 64 6F 77 73 2D  31 32 35 32 22 3F 3E 3C Windows-1252"?><
000030: 52 4F 57 20 43 69 74 79  3D 22 E0 22 2F 3E 0D 0A ROW City="."/>..

Dies ist die XML:

<?xml version = "1.0" encoding="Windows-1252"?><ROW City="à"/>

Warum die Fehler auftreten?

(Der XML-Code geladen wird hervorragend in .NET und anderen Umgebungen nicht mit MSXML6, es funktioniert auch auf Windows 7 Ultimate x64 SP1).

--jeroen

  • Fehler codes, wie, dass häufiger in hexadezimaler Schreibweise geschrieben: 800C0006. Das bedeutet, dass "das system nicht finden kann die angegebene Objekt." (Das ist die Grenze dessen, was ich weiß.) Ist die Codierung relevant für das problem, Frage ich mich? Was ist, wenn Sie angeben, dass eine andere Codierung? Was ist, wenn Sie halten Sie die Codierung, die Sie jetzt haben, aber nur ASCII-Zeichen verwenden?
  • Das ist die Sache: es ist eine Kombination der Zeichen und die Codierung. Und es funktioniert in Windows 7. So, es hat zu tun mit der MSXML6-version zu. Ich bin der Untersuchung version zahlen jetzt. Zusammenfassen, wenn Sie fertig sind (wahrscheinlich morgen)
Schreibe einen Kommentar