AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit XML Encoding

Ein Thema von tofse · begonnen am 25. Jan 2018 · letzter Beitrag vom 25. Jan 2018
Antwort Antwort
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#1

AW: Probleme mit XML Encoding

  Alt 25. Jan 2018, 14:15
Leider der gleiche Fehler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#2

AW: Probleme mit XML Encoding

  Alt 25. Jan 2018, 14:50
Leider der gleiche Fehler
Das ist auch richtig so.

Xml.Encoding hat garnichts mit dem Einlesen zu tun.
Da steht das Encoding drin, was beim Auslesen der XML genutzt wurde, bzw. welches beim Speichern verwendet wird.

Erstmal ist diese XML nicht valide aka "ungültig", womit der Fehler völlig korrekt ist.
Es gilt das Encoding via BOM (für den ersten XML-Node), wenn kein BOM dann UTF-8. Und gibt es eine Processing Instruction (<?xml ...?> ), dann gilt nach ihr das darin definierte Encoding.
Als Ausnahme gelten UTF-16 LE und BE, welche auch ohne BOM am ersten < erkannt werden können. (#0'<' oder '<'#0)
Ohne Angabe eines Encoding sind XML immer UTF-8, also liegt der Fehler beim schreibenden Programm, wenn es ein falsches Encoding verwendet, als es (nicht) in der XML definiert hat.

Kann man beim LoadFromFile ein TEncoding-Parameter übergeben werden, um das Default-Encoding zu ändern?
Wenn nicht, dann mußt du die Datei selber einlesen, dabei das gewünschte TEncoding verwenden (bei normalen Textdateien ist es ANSI, unter Windows) und dann als String via LoadXML (oder wie das hieß) laden.
> Lesen mit TStringList oder Delphi-Referenz durchsuchenTFile.ReadAllText
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Jan 2018 um 14:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Probleme mit XML Encoding

  Alt 25. Jan 2018, 15:02
Zitat:
ein Fremdprogramm X exportiert XML Dateien.
Wenn die Datei so wie si angegeben ist aussieht, ist es kein gültiges XML.
Wenn du an diesem Fehler nix machen kannst (habe ich z.B. auch bei Adobe-SW die - sagen wir mal Adobe XML schreibt -), so solltest du evtl ein FixDefectXMLFromXYZ-Methode schreiben welche die Codierung korrekt setzt und den XML-Header ebenfalls ergänzt. Dann kannst du mit dem XML-Parser deiner Wahl nutzen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.118 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Probleme mit XML Encoding

  Alt 25. Jan 2018, 22:59
Was Bernhard meint, ist das hier:
Delphi-Quellcode:
var
  Stream1: TFileStream;
  Stream2: TMemoryStream;
const
  Head: AnsiString = '<?xml version="1.0" encoding="UTF-8"?>'; // oder Encoding Windows-1252
begin
  Stream1 := TFileStream.Create(DateiDatei, fmOpenRead or fmShareDenyNone);
  Stream2 := TMemoryStream.Create;
  try
    Stream2.Write(Head[1], Length(Head));
    Stream2.Copyfrom(Stream1, 0);
    Stream2.Position := 0;
    // bla
    Xml.LoadFromStream(Stream2);
    // bla
  finally
    Stream1.Free;
    Stream2.Free;
  end;
end;
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz