AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Wie Node verschieben? Empfehlung für Parser
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Node verschieben? Empfehlung für Parser

Ein Thema von BBoy · begonnen am 5. Aug 2013 · letzter Beitrag vom 5. Aug 2013
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.210 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Wie Node verschieben? Empfehlung für Parser

  Alt 5. Aug 2013, 15:35
Dass jemandem die Reihenfolge der Knoten auf gleicher Ebene wichtig war habe ich ehrlich gesagt noch nie gesehen. Wenn man einen Knoten sucht, dann doch nicht über die Position an welcher er steht, sondern über den Namen.

Ich kenne mich mit den VCL-Komponenten noch nicht so wirklich aus, aber bei vielen kann man an einen Eintrag doch ein Objekt koppeln. Jeder Eintrag in deiner Grid-Komponente wäre doch eine IXMLNode. Dann kannst du doch jede Zeile durchgehen, einem neuen IXMLDocument hinzufügen und das Teil dann am Schluss speichern...
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: Wie Node verschieben? Empfehlung für Parser

  Alt 5. Aug 2013, 15:38
Die Reihenfolge ist wichtig, da es sich um eine sortierte Liste handelt die als xml gespeichert/geladen werden soll.
Sagen wir einfach es wäre eine ToDo Liste, die wichtigen Dinge oben usw....
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.210 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Wie Node verschieben? Empfehlung für Parser

  Alt 5. Aug 2013, 15:43
Naja, wenn es denn eindeutig sortiert ist, hätte ich jedem Eintrag doch explizit auch seine Reihenfolge als Attribut mitgegeben.

Wenn ich persönlich die XML nun bearbeiten würde hätte ich mir keine Gedanken gemacht, die Reihenfolge beizubehalten.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Wie Node verschieben? Empfehlung für Parser

  Alt 5. Aug 2013, 19:06
Die Reihenfolge ist wichtig, da es sich um eine sortierte Liste handelt die als xml gespeichert/geladen werden soll.
Dafür die Reihenfolge in der Datei zu nutzen ist eine der schlimmsten Unarten, die ich bei XML bisher gesehen habe...

Die Sortierung ist eigentlich in der Datei doch nicht relevant, sondern nur, wenn du die Daten anzeigst. Und die Anzeige hat mit dem Dateiinhalt direkt ja nichts zu tun.

Wenn du die Daten z.B. in einer TVirtualStringTree anzeigst, musst du nur OnCompareNodes implementieren (wo du nur angeben musst wie zwei Knoten zueinander stehen), den Rest macht die alleine. Das geht auch sehr schnell.
Auch Attribute wie bereits genannt kann man dafür nehmen, wenn man die Reihenfolge auch in der Datei reflektiert haben möchte.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: Wie Node verschieben? Empfehlung für Parser

  Alt 5. Aug 2013, 20:44
Zitat:
Wenn du die Daten z.B. in einer TVirtualStringTree anzeigst, musst du nur OnCompareNodes implementieren (wo du nur angeben musst wie zwei Knoten zueinander stehen), den Rest macht die alleine. Das geht auch sehr schnell.
Auch Attribute wie bereits genannt kann man dafür nehmen, wenn man die Reihenfolge auch in der Datei reflektiert haben möchte.
Wie das funktionieren soll kann ich mir überhaupt nicht vorstellen.

Zitat:
Dafür die Reihenfolge in der Datei zu nutzen ist eine der schlimmsten Unarten, die ich bei XML bisher gesehen habe...
tja, so sind laien eben Das war das erste wo mir eingefallen ist. Ich speicher die Nodes in der Reihenfolge wie sie später gelesen werden und die für mich wichtig ist. Weiß nicht was daran so abwegig ist. Damit spare ich mir spätere Abfragen und Sortierungen.
Ich könnte auch eine weitere node verwenden mit der Sortierreihenfolge die beim einlesen der Datei berücksichtigt wird. Aber auch da müsste ich beim lesen weitere routinen schreiben die das in die richtige Reihenfolge bringen. Bei meiner Methode spare ich mir das alles. Da es sich dabei um recht kleine Dateien handelt, funktioniert das gut

Oder gibt es andere Gründe die dagegen sprechen?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Wie Node verschieben? Empfehlung für Parser

  Alt 5. Aug 2013, 22:19
Oder gibt es andere Gründe die dagegen sprechen?
Irgendwo musst du ja so oder so sortieren, spätestens wenn neue Einträge hinzu kommen. Das heißt du hast sowieso eine Sortierroutine.
Das Auslesen der XML-Datei ist sehr viel einfacher, wenn da nur die Daten drin sind und nicht zusätzliche implizite Informationen wie die Reihenfolge der Datensätze. Und da XML-Dateien Textdateien sind, kannst du ohnehin kaum davon ausgehen, dass da nie ein User etwas dran ändert. Sortierst du dann beim Anzeigen nicht, stimmt plötzlich die Sortierung nicht.

Davon abgesehen ist das viel umständlicher.

Nicht umsonst werden bei der Abbildung von XML-Dokumenten in Datenbanken so viele Verrenkungen gemacht.
Das war bei mir noch nie ein Problem...
Gut, die größten XML-Dateien waren nur wenige hundert MiB groß, aber immerhin...
Die Reihenfolge war darin jedenfalls immer unabhängig von der Reihenfolge in der XML-Datei.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#7

AW: Wie Node verschieben? Empfehlung für Parser

  Alt 5. Aug 2013, 21:46
Naja, wenn es denn eindeutig sortiert ist, hätte ich jedem Eintrag doch explizit auch seine Reihenfolge als Attribut mitgegeben. Wenn ich persönlich die XML nun bearbeiten würde hätte ich mir keine Gedanken gemacht, die Reihenfolge beizubehalten.
Wenn ich XML-Dateien verarbeite, muss ich eben damit rechnen, dass die Reihenfolge Informationen enthalten kann
... gerade bei Dateien, die Dokumente (z.B. ToDo-Liste) enthalten und nicht primär datenzentriert sind.
Nicht umsonst werden bei der Abbildung von XML-Dokumenten in Datenbanken so viele Verrenkungen gemacht.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  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 07:55 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