Autor Beitrag
Stocki1990
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: So 07.03.10 01:04 
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:

ausblenden 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:

ausblenden volle Höhe Delphi-Quelltext
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);

//Test, um zu erfahren, welchen Wert "Lieferscheinanzahl" hat
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 user profile iconChristian S.: Topic aus IO, XML und Registry verschoben am So 07.03.2010 um 00:10
Stocki1990 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: So 07.03.10 10:22 
@Christian S. - Danke für das Verschieben meinen Threads :)

Ich hoffe, dass mir jemand von euch jetzt besser helfen kann.

Grüße
Christoph