AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein .NET-Framework (managed code) Delphi XML Header Neu ohne Zeichensatzangabe macht Probleme
Thema durchsuchen
Ansicht
Themen-Optionen

XML Header Neu ohne Zeichensatzangabe macht Probleme

Ein Thema von matashen · begonnen am 30. Apr 2025 · letzter Beitrag vom 30. Apr 2025
Antwort Antwort
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
486 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

XML Header Neu ohne Zeichensatzangabe macht Probleme

  Alt 30. Apr 2025, 07:30
Hallo zusammen,

ich hab in meinem Delphi 11 ein Programm neu compiliert das ich damals mit Delphi XE2 geschrieben habe.

Das XML Dokument das ich öffne und bearbeite hat vor dem Bearbeiten

Code:
<?xml version="1.0" encoding="utf-8"?>
Das hat mein altes Delphi auch wieder so weg geschrieben

beim Delphi 11 wird das encoding weg gelassen, was die Software der Gegenstelle mit einem Fehler meldet da es das Ecnoding haben will, bekomme aber beim schreiben nur noch

Code:
<?xml version="1.0"?>
Was muss ich beim TXMLDocument machen damit er das Encoding wieder schreibt.

Die DOMVendor hab ich schon alle durchprobiert, da ist es egal das Encoding wird immer weg gelassen. Den Source meiner Anwendung habe ich beim XML Part nicht mal geändert.

Evtl. Hat jemand eine Ahnung was ich da machen muss.

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.782 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: XML Header Neu ohne Zeichensatzangabe macht Probleme

  Alt 30. Apr 2025, 07:56
.. ist das vielleicht hilfreich für Dich: https://stackoverflow.com/questions/...mldocument-xml

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
330 Beiträge
 
Delphi 12 Athens
 
#3

AW: XML Header Neu ohne Zeichensatzangabe macht Probleme

  Alt 30. Apr 2025, 08:16
Beim TXMLDocument bzw IXMLDocument kann gibt es das Attribut "Encoding", wo man "UTF-8" einfach reinschreiben kann.

Also einfach

Code:
AXMLDocument.Encoding := 'UTF-8';
Ups, hatte den Link noch nicht angeschaut.
Bei mir scheint das "Encoding" Attribut völlig ausreichend zu sein. Ich weiß jetzt gerade nicht, ob die Delphi-Version vielleicht noch eine Rolle spielen könnte, ich bin auf Delphi 12. Abgesehen davon verwende ich grundsätzlich IXMLDocument anstatt TXMLDocument, aber das sollte eigentlich keinen Unterschied machen.

Geändert von AuronTLG (30. Apr 2025 um 08:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.983 Beiträge
 
Delphi 12 Athens
 
#4

AW: XML Header Neu ohne Zeichensatzangabe macht Probleme

  Alt 30. Apr 2025, 08:44
Daran hat sich eigentlich gar nichts geändert. Wenn du LoadFromXML + SaveToXML nutzt, wird das Encoding nicht gelesen und geschrieben, wenn du LoadFromFile oder LoadFromStream und die entsprechenden Speicherroutinen verwendest, wird es verwendet. Beispiel:
Delphi-Quellcode:
var
  XmlDoc: IXmlDocument;
  Stream: TStringStream;
begin
  XmlDoc := TXmlDocument.Create(nil);
  try
    Stream := TStringStream.Create('<?xml version="1.0" encoding="utf-8"?><test></test>', TEncoding.UTF8);
    try
      XmlDoc.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;

    Stream := TStringStream.Create('', TEncoding.UTF8);
    try
      XmlDoc.SaveToStream(Stream);
      ShowMessage(Stream.DataString);
    finally
      Stream.Free;
    end;
  finally
    XmlDoc := nil;
  end;
end;
Das Verhalten ist in XE2 und Delphi 11 identisch.
Sebastian Jänicke
AppCentral
  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 06:13 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