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)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Verhalten hängt davon ab, welche version der
MSXML6.DLL
Sie installiert haben.Reproduzieren diese besser, habe ich eine andere Datei
abnormal.xml
neben dernormal.xml
von der Frage.Datei dump
abnormal.xml
:Datei
abnormal.xml
:Datei dump
normal.xml
:Datei
normal.xml
:Verhalten ich erwarten, dass:
abnormal.xml
scheitert, weil es Sie nicht geben Sie eine Codierung, enthält aber ein Charakter mit high-bit-setnormal.xml
gelingt, als es enthält eine single-byte-Codierung Unterstützung high-bit-Zeichen, also Zeichen mit high-bit gesetzt ist, dürfenDiese sind die beobachteten Szenarien:
MSXML6 FEHLER:
MSXML6 ERFOLG:
Dies ist eine übersicht, welche Versionen fehl.
Die Namen der DLL ' s in Klammern sind von Ihrer version Informationen.
Beobachtungen:
Also: wenn du MSXML6 Arbeit, zum ersten mal in eine Prüfung, dass Sie tatsächlich haben die neuesten MSXML6.DLL für Ihre Ziel-Windows-version.
--jeroen