Servus Leute!
Ich bin gerade dabei, mir ein bisschen XML beizubringen und bin da auf ein Kleines Problemchen gestoßen.
Meine XML-Datenbank sieht wie folgt aus:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| <Lieferscheinliste>
<LieferscheinDetail id="1">
<Lieferschein>83450W</Lieferschein> <Artikel>4002</Artikel> <Menge>5.5</Menge> <Einheit>HR</Einheit> <Bezeichnung>Regie Selbstlader, 11 to</Bezeichnung> <Preis>37.79</Preis> <Ust>20</Ust> <Faktor>1</Faktor>
</LieferscheinDetail>
</Lieferscheinliste> |
Die LieferscheinDetail-ID geht bis zum Wert 21 hinauf und hat bei jeder ID den exakt gleichen Aufbau. Dies ist also nur ein kleiner Ausschnitt aus meiner XML-Datenbank.
Ich würde diese Datenbank gerne in ein Memofeld auslesen und benutze dafür folgenden Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| procedure TForm2.ReadXML(); var Lieferscheinanzahl, I : integer; begin
Lieferscheinanzahl := (XMLFile.DocumentElement.childnodes['Lieferscheinliste'].childnodes.count);
Label1.caption := inttostr(lieferscheinanzahl);
For I := 0 to Lieferscheinanzahl do begin
memo1.lines.add(' '); memo1.lines.add('Lieferschein:'); memo1.Lines.add(XMLFile.DocumentElement.childnodes[i].ChildNodes['Lieferschein'].Text); memo1.lines.add('Artikel:'); memo1.Lines.add(XMLFile.DocumentElement.childnodes[i].ChildNodes['Artikel'].Text); memo1.lines.add('Menge:'); memo1.Lines.add(XMLFile.DocumentElement.childnodes[i].ChildNodes['Menge'].Text); memo1.lines.add('Einheit:'); memo1.Lines.add(XMLFile.DocumentElement.childnodes[i].ChildNodes['Einheit'].Text); memo1.lines.add('Bezeichnung:'); memo1.Lines.add(XMLFile.DocumentElement.childnodes[i].ChildNodes['Bezeichnung'].Text); memo1.lines.add('Preis:'); memo1.Lines.add(XMLFile.DocumentElement.childnodes[i].ChildNodes['Preis'].Text); memo1.lines.add('USt:'); memo1.Lines.add(XMLFile.DocumentElement.childnodes[i].ChildNodes['Ust'].Text); memo1.lines.add('Faktor:'); memo1.Lines.add(XMLFile.DocumentElement.childnodes[i].ChildNodes['Faktor'].Text); memo1.lines.add(' '); memo1.lines.add('------------------------');
end;
end; |
Der Fehler liegt, glaube ich, bei "Lieferscheinanzahl", da dieser Variablenwert 0 beträgt. Wie muss man den Befehl umschreiben, dass "Lieferscheinanzahl" auf alle 21 Lieferschein-IDs zugreift ???
Soviel ich herausgefunden habe, müsste "LieferscheinDetail" doch ein Childnode von "Lieferscheinliste" sein.
Da ich mit meinem Problem schon seit einigen Stunden kämpfe, hoffe ich, dass ihr mir bei meinem kleinen Problem helfen könnt.
Danke schonmal im Voraus für eure Hilfe
Wünsche euch einen schönen und erholsamen Sonntag
Christoph
Moderiert von
Christian S.: Topic aus IO, XML und Registry verschoben am So 07.03.2010 um 00:10