Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 8. Jun 2011, 01: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat