Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: XML-Struktur wird beim Speichern zerstört - Warum?

  Alt 8. Jun 2011, 00:10
Man kann auch schon mit billigen Pfaden (ohne XPath) und mit Variablen so Einiges "wegoptimieren".

Delphi-Quellcode:
XML_EV_Players.ChildNodes[1].ChildNodes.Nodes[Idx].ChildNodes['Rounds'].ChildNodes['Round1'].ChildNodes[i].ChildNodes['Shots']

// Der Hauptknoten ist RootDocument. (es kann eh nur Einen geben)

XML_EV_Players.RootDocument.ChildNodes.Nodes[Idx].ChildNodes['Rounds'].ChildNodes['Round1'].ChildNodes[i].ChildNodes['Shots']

// Warum gehst du hier über ChildNodes[x und da über ChildNodes.Nodes[x ?
// Eine Variante reicht doch.

XML_EV_Players.RootDocument.ChildNodes[Idx].ChildNodes['Rounds'].ChildNodes['Round1'].ChildNodes[i].ChildNodes['Shots']

// Pfade kann man zusammenfassen

XML_EV_Players.RootDocument.ChildNodes[Idx].ChildNodes['Rounds\Round1'].ChildNodes[i].ChildNodes['Shots']

// und man muß doch nicht immer wieder den selben Pfad auswerten ... vor den Schleifen speichern?

x := XML_EV_Players.RootDocument.ChildNodes[Idx];
for ... do
  y := x.ChildNodes['Rounds\Round1'].ChildNodes[i];
  for ... do
    y.ChildNodes['Shots'] := ...;

// aber über XPath kann man natürlich auch noch nette Dinge machen
PS: Du solltest dir mal die NodeType(n) ansehn,
denn MSXML hat nicht nur in seinem Baum (DOM) nicht nur Nodes und Teste, sondern auch Steuerdaten.
So gibt es z.B. bei jedem Zeilenumbruch oder bei Leerzeichen zwischen XML-Nodes in ChildNodes jeweils noch ein "Steuer"-Element.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat