![]() |
XML "Stil"
Hallo,
ich benutze TXMLDocument um eine XML-Datei zu erstellen. Das funktioniert auch an sich, allerdings ist die fertige Datei nicht eingerückt und daher schlecht leserlich, kann man das irgendwie automatisch machen lassen oder muss ich es manuell machen?
Delphi-Quellcode:
Wie ihr an diesem Codeausschnitt seht ist die XML hinterher sehr verschachtelt und es ist mir wichtig, dass man die Werte auch noch gut im Editor lesen kann (wenn sie einfach nur von einem anderen Programm wieder eingelesen werden würde wäre es egal). Kann man dieses ChildNodes[0].ChildNodes[0] noch irgendwie optimieren?
case CountDots(name) of
0: begin root := XML.DocumentElement.AddChild('imgdir'); root.Attributes['name'] := name; XMLlb; end; 1: begin root := XML.DocumentElement.ChildNodes[0].AddChild('imgdir'); root.Attributes['name'] := Explode('.', name)[1]; XMLlb; end; 2: begin root := XML.DocumentElement.ChildNodes[0].ChildNodes[0].AddChild('imgdir'); root.Attributes['name'] := Explode('.', name)[2]; Inc(Index); XMLlb; end; 3: begin root := XML.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0].AddChild('imgdir'); root.Attributes['name'] := Explode('.', name)[3]; XMLlb; end; end;
Delphi-Quellcode:
XMLlb soll nach jeder Änderung einen Zeilenumbruch einfügen (auch damit es besser lesbar ist), allerdings funktioniert das irgendwie auch nicht..
procedure XMLlb;
begin XML.XML.Text := XML.XML.Text + sLineBreak; XML.LoadFromXML(XML.XML.Text); end; Ich hoffe ihr könnt mir helfen. :? |
Re: XML "Stil"
Moin,
Soweit ich mich erinnere gibt es irgendwo ein AutoIdent Feature (Options?). Grüße, Max |
Re: XML "Stil"
Danke, das sieht doch jetzt schonmal etwas besser aus. Allerdings bekomme ich jetzt nachdem ein paar Werte gelesen wurden folgende Exception:
This operation can not be performed with a Node of type PCData. Die kam vorher nicht, warum kommt sie jetzt? |
Re: XML "Stil"
So, ich habe es jetzt anders gelöst :)
Delphi-Quellcode:
Jetzt ist die Einrückung schonmal perfekt, genau so wie ich es will.
XML.XML.Text := FormatXMLData(XML.XML.Text);
XML.Active := True; // Wurde deaktiviert, wieder aktivieren Leider habe ich noch ein Problem: Alle Sonderzeichen wie z.B. <, > und " müssen durch z.B. <, > und " ersetzt werden. Das ist kein Problem, bevor ich den Knoten dann anlege StringReplace ich einfach den Wert. Das klappt ja auch, nur scheint der XML-Parser alle & nochmal durch & zu ersetzen, sodass sowas wie &lt; entsteht, was natürlich unverwertbar ist. Es werden komischerweise nur & behandelt, nicht die anderen Zeichen. Kann man das irgendwie abschalten / die anderen auch automatisch umstellen lassen? Ich hoffe das ist mein letztes Problem XMLs betreffend und es wäre nett wenn ihr mir noch einmal helft! :) |
Re: XML "Stil"
Hallo,
die Sonderzeichen musst Du nicht umwandeln, das macht der Parser selbst (wie Du ja schon bemerkt hast). Also einfach den Text schreiben, und die Komponente kümmert sich um den Rest. Gruß xaromz |
Re: XML "Stil"
Nein, er macht es eben nur beim & und nicht bei den anderen Zeichen.
Edit: Ah, ok, ich hatte mich geirrt. Er ändert nur nicht ' in ' . |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 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