AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi TXMLDocument encoding wird nicht korrekt geschrieben
Thema durchsuchen
Ansicht
Themen-Optionen

TXMLDocument encoding wird nicht korrekt geschrieben

Ein Thema von T.E. · begonnen am 23. Jul 2012 · letzter Beitrag vom 7. Sep 2018
Antwort Antwort
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#1

TXMLDocument encoding wird nicht korrekt geschrieben

  Alt 23. Jul 2012, 14:23
Liebe Leute,

ich habe zur Zeit ein etwas merkwürdiges Verhalten bei meiner TXMLDocument festgestellt, aber zunächst meinen Code:
Delphi-Quellcode:
procedure TMain_Form.CreateXMLClick(Sender: TObject);
var
  newHead, newSub: IXMLDOMNode;
  fAppPath: String;
  LDocument: IXMLDocument;
  LNodeElement, NodeCData, NodeText: IXMLNode;
begin
  fAppPath := ExtractFilePath(ParamStr(0)) + 'tmp\';

  LDocument := TXMLDocument.Create(nil);
  LDocument.Active := True;

  LDocument.LoadFromXML
    ('<?xml version="1.0" encoding="UTF-8"?>' +
    '<TestElement>Inner text</TestElement>');

  LDocument.DocumentElement := LDocument.CreateNode('cnpsXML', ntElement, '');
  LDocument.DocumentElement.Attributes['ProjectID.DWD'] := '161428257';
  LDocument.DocumentElement.Attributes['CreatedByAppVersion'] := '3.20.0';

  LDocument.SaveToFile(fAppPath + 'test.xml');
end;
Wenn ich diesen Code ausführe und mir anschließend die XML anschaue, so steht in dieser nur folgendes:
Code:
<?xml version="1.0"?>
<cnpsXML ProjectID.DWD="161428257" CreatedByAppVersion="3.20.0"/>
Wenn ich statt encoding=UTF-8 einfach UTF-16 schreibe, so wird dieses korrekt übertragen.

Kann mir jemand sagen, wo der Fehler liegt?

Schöne Grüße und besten Dank!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TXMLDocument encoding wird nicht korrekt geschrieben

  Alt 23. Jul 2012, 14:38
UTF-8 ist der Standard ... ist sonst nix Anderes angegeben, dann ist jede XML immer UTF-8.

Und Standardwerte muß man nicht unbedingt speichern. (spart Platz/Speicher)



Mich wundert da schon eher, daß dein TestElement fehlt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#3

AW: TXMLDocument encoding wird nicht korrekt geschrieben

  Alt 23. Jul 2012, 14:39
Ah ok, hätte ich auch vorher drauf kommen können.

Danke

Edit: das mit dem Testelement ist mir auch schon aufgefallen, aber irgendwie scheint der immer nur den letzten Knoten im Quellcode zu schreiben...
Gruß Torben
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TXMLDocument encoding wird nicht korrekt geschrieben

  Alt 23. Jul 2012, 14:50
aber irgendwie scheint der immer nur den letzten Knoten im Quellcode zu schreiben...
XML muß/kann nur einen Root-Knoten haben.
Aber da hätte ich dann wenigstens eine Fehlermeldung erwartet, wenn man mehr einbaut.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#5

AW: TXMLDocument encoding wird nicht korrekt geschrieben

  Alt 23. Jul 2012, 14:56
Okay, aber wie soll man denn bitte die folgende Struktur erstellen, wenn man mit CreateNode nur den Root Knoten erstellen kann?

Code:
<?xml version="1.0" encoding="UTF-8"?>
  <cnpsXML ProjectID.DWD="161428257" CreatedByAppVersion="3.20.0">
    <Sources>
      <Module_0 Inpoint.QWD="-1" Outpoint.QWD="-1" Duration.QWD="4976100000" MultiSource.DWD="1">
        <ModuleData>
          <StreamTypeTable StreamSelector_0.DWD="0" StreamType_0.DWD="0" StreamPtr_0.DWD="0" StreamSelector_1.DWD="2" StreamType_1.DWD="0" StreamPtr_1.DWD="0"/>
          <SourceModules>
            <MultiSrcModule_0 MultiSource.DWD="0" Filename="E:\failed\20120503115047.MTS" CreatorMachine="TR2" CreatorUser="Administrator" FullUNCFilename="\\TR2\failed\20120503115047.MTS">
              <ModuleData m_rFrameRateOverride.DBL="50.000000" AspectRatio.BIN="AQAAAAEAAAA=" PixelAspect_X.DWD="1" PixelAspect_Y.DWD="1" audio_combine_streams.DWD="0" audio_stream_id.DWD="4352"/>
            </MultiSrcModule_0>
          </SourceModules>
        </ModuleData>
        <Filter_0/>
        <Filter_1/>
      </Module_0>
</cnpsXML>
Denn AddChild ist für mich nur ein Datensatz, wie z.B. ModuleData, oder liege ich da falsch? (Hab bisher noch nie mit Delphi und XML in Kombination gearbeitet, sollte man wohl dazu sagen...)
Gruß Torben
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TXMLDocument encoding wird nicht korrekt geschrieben

  Alt 23. Jul 2012, 15:14
*
XML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<cnpsXML/>
erstellen

* die Parameter für den Rootknoten setzen

* Unterknoten erstellen



Oder du erstellst ein Dokument, anstatt etwas zu laden (LoadFromXML).

XML-Code:
XML := TXMLDocument.Create(nil);
XML.DOMVendor := 'MS-XML-DOM';
XML.Active := True;
XML.Version := '1.0';
XML.StandAlone := 'yes';
XML.Encoding := 'UTF-8';
XML.AddChild('cnpsXML');
...
Ein Therapeut entspricht 1024 Gigapeut.
  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:48 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 by Thomas Breitkreuz