AGB  ·  Datenschutz  ·  Impressum  







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

XML "Stil"

Offene Frage von "WorstNightmare"
Ein Thema von WorstNightmare · begonnen am 15. Nov 2008 · letzter Beitrag vom 18. Nov 2008
Antwort Antwort
WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#1

XML "Stil"

  Alt 15. Nov 2008, 19:32
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:
      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;
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?

Delphi-Quellcode:
procedure XMLlb;
begin
  XML.XML.Text := XML.XML.Text + sLineBreak;
  XML.LoadFromXML(XML.XML.Text);
end;
XMLlb soll nach jeder Änderung einen Zeilenumbruch einfügen (auch damit es besser lesbar ist), allerdings funktioniert das irgendwie auch nicht..

Ich hoffe ihr könnt mir helfen.
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#2

Re: XML "Stil"

  Alt 15. Nov 2008, 20:51
Moin,

Soweit ich mich erinnere gibt es irgendwo ein AutoIdent Feature (Options?).

Grüße,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#3

Re: XML "Stil"

  Alt 15. Nov 2008, 21:38
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?
  Mit Zitat antworten Zitat
WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#4

Re: XML "Stil"

  Alt 18. Nov 2008, 18:09
So, ich habe es jetzt anders gelöst

Delphi-Quellcode:
      XML.XML.Text := FormatXMLData(XML.XML.Text);
      XML.Active := True; // Wurde deaktiviert, wieder aktivieren
Jetzt ist die Einrückung schonmal perfekt, genau so wie ich es will.

Leider habe ich noch ein Problem: Alle Sonderzeichen wie z.B. <, > und " müssen durch z.B. &lt;, &gt; und &quot; 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 &amp; zu ersetzen, sodass sowas wie &amp;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!
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: XML "Stil"

  Alt 18. Nov 2008, 18:42
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#6

Re: XML "Stil"

  Alt 18. Nov 2008, 19:01
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 &apos; .
  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 01:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz