Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML Werte auslesen und in Memo anzeigen?! (https://www.delphipraxis.net/28763-xml-werte-auslesen-und-memo-anzeigen.html)

Computerbabalulu 29. Aug 2004 22:38


XML Werte auslesen und in Memo anzeigen?!
 
Hi

Ich möchte aus der XML Date im Anhang jeweils die Formate und jeweiligen Stückzahlen der Bildbestellungen auslesen und in einem Memo oder so Auflisten.

Z.B

OrginalFilname = Bild003.jpg
Copies = 3
Name(Format) = Bild 13 x 18

OrginalFilname = Bild004.jpg
Copies = 1
Name(Format) = Bild 10 x 15

usw...

Ich benutze MSXML.

Kann mir jemand anhand der Datei mal ein Beispiel geben? :gruebel:

Vielen Dank

Gruß Baba

himitsu 29. Aug 2004 23:38

Re: XML Werte auslesen und in Memo anzeigen?!
 
Such doch einfach mal in der DP nach "ShoutBox", "Wetbewerb", oder ähnliches ... da haben ja Einige von uns Programme (ShoutBox-Reader) erstellt, wo eine XML-Datei ausgelesen und dann natürlich auch angezeigt wird - da dürften sich ja auch 'ne Menge Beispiele finden lassen :zwinker:

[nich ganz OnTopic]
In einigen der Programme werden ja auch kleine Bildchen (Smilies) mit angezeigt - eventuell kannst du das ja auch ganz gut verwenden.

Computerbabalulu 29. Aug 2004 23:50

Re: XML Werte auslesen und in Memo anzeigen?!
 
Hi Himitsu

Danke für den Tip :thumb:

Werde mal sehen ob ich da was gebrauchen kann :mrgreen: bzw. ob ich daraus schlau werde :oops: !

Smileys sind immer gut :zwinker:

Gruß Baba

Computerbabalulu 30. Aug 2004 03:45

Re: XML Werte auslesen und in Memo anzeigen?!
 
Hi nochmal

Nun, ich habe nichts gefunden was mich weiterbringt :oops:

Ich hätte vielleicht dabei sagen sollen, das ich noch Anfänger in Sachen Delphi bin :wall:

Kann mir das einer mal so erklären das auch ich als Newbi dahinter steige :gruebel:

Vielen Dank!

Gruß Baba

Luckie 30. Aug 2004 05:26

Re: XML Werte auslesen und in Memo anzeigen?!
 
Hast du auch schon mal in der Tutorial-Sparte nach XML gesucht und dir die Ergebnisse angekuckt?

Delphi_Fanatic 30. Aug 2004 07:31

Re: XML Werte auslesen und in Memo anzeigen?!
 
Falls Du Delphi 7 (Pro) hast, dann findest Du dort auch eine xml-Komponente (TXMLDocument oder so ...)

Die ist hier ganz gut dokumentiert, und da gibt's auch eine Art Einsteiger-Kurs und Beispiele :

http://delphi.about.com/library/weekly/aa072903a.htm

Zitat:

Ich hätte vielleicht dabei sagen sollen, das ich noch Anfänger in Sachen Delphi bin :wall:
aber aber.... was soll denn dieser Smiley dahinter ? Wir waren alle mal Anfänger, und sowas wie
einen einfachen, eigenen XML-Parser zu schreiben wäre ja auch eine ideale Anfänger-Aufgabe... da
lernt man richtig gut bei ...

MathiasSimmack 30. Aug 2004 08:51

Re: XML Werte auslesen und in Memo anzeigen?!
 
@Computerbabalulu --

Was ich dazu sagen kann ist: Dein Ansatz ist mir etwas zu umständlich. Du hast eine Struktur wie die folgende:
XML-Code:
<Images Count="12">
  <Image1 ... />
  <Image2 ... />
  <Image3 ... />
 
</Images>
Das sieht nur auf den ersten Blick vorteilhaft aus. Da aber eine XML-Datei bspw. keine INI ist, bei der es in einer Sektion nur einen bestimmten Namen geben kann/darf, ist die Zählung überflüssig und erschwert IMHO sogar die Programmierung.

MSXML (eigentlich jeder XML-Parser) kennt so genannte XPath-Anfragen. Sieh´s vereinfacht betrachtet wie einen Datenbank-Query, mit dem du auf einen Schlag mehrere Informationen abfragen kannst. Würdest du auf die Zählung verzichten, würde dein Knoten wie folgt aussehen:
XML-Code:
<Images>
  <Image .../>
  <Image .../>
  <Image .../>
 
</Images>
Das ist absolut kein Problem, da sich die einzelnen Knoten nicht in die Quere (in das Query ;)) kommen. Notfalls hast du ja auch noch die "ID"-Attribute. Aber du hättest mit einer XPath-Abfrage wie
Delphi-Quellcode:
nl := xmldoc.selectNodes('/Data/Images/Image');
// var nl : IXMLDOMNodeList
alle <Image>-Knoten in einem Array, das du nun der Reihe nach durchlaufen kannst:
Delphi-Quellcode:
for i := 0 to nl.length - 1 do
begin
  { ... }
end;
Innerhalb dieser Schleife kannst du die Attribute abfragen, die dich interessieren; sprich: Bildname, Anzahl der Kopien, usw. Und wie man das macht, das findest du bspw. im Tutorial von Chakotay erklärt. Aber es müsste auch hier im Forum genug [dp="xml Attribute"]Ergebnisse[/dp] dazu geben.

Bei der Zählvariante von oben ist (ich sag´ mal) dummerweise auch jeder Knoten anders benannt. Das heißt: Man muss tatsächlich erst den Hauptknoten bzw. dessen "Count"-Attribut auslesen
Delphi-Quellcode:
node := xmldoc.selectSingleNode('/Data/Images/@Count'); // node = IXMLDOMNode
ShowMessage(node.text);
und dann muss man auf die gleiche Weise jeden einzelnen Knoten abfragen, wobei der Zählwert zu berücksichtigen ist, weil er im Namen steckt. Und das ist, meiner Ansicht nach, umständlich.

Zum Auflisten würde ich übrigens kein Memo sondern eher eine List-View verwenden.

MathiasSimmack 30. Aug 2004 08:55

Re: XML Werte auslesen und in Memo anzeigen?!
 
PS: Noch ein Nachtrag --

Zitat:

Zitat von Delphi_Fanatic
und sowas wie einen einfachen, eigenen XML-Parser zu schreiben wäre ja auch eine ideale Anfänger-Aufgabe... da lernt man richtig gut bei ...

Ich weiß nicht so recht. Unter einem Parser verstehe ich den Code, der das XML-Dokument lädt, speichert, nach bestimmten Knoten und/oder Attributen sucht, usw. Kurz gesagt: die MS-XML-Bibliothek bspw., die mir den ganzen internen Kram vom Leib hält und mir nur die Schnittstelle zur Verfügung stellt. Unter dem Gesichtspunkt glaube ich nicht, dass ein eigener Parser eine gute Anfängeraufgabe ist.

Aber wenn du von einem Programm sprichst, das mit Hilfe eines beliebigen Parsers XML-Daten ausliest und mit ihnen arbeiten kann, dann würde ich dir zustimmen. Das ist eine gute Anfängeraufgabe, bei der man auch was lernen kann. ;)

Computerbabalulu 30. Aug 2004 19:00

Re: XML Werte auslesen und in Memo anzeigen?!
 
Hallo @all

Danke für die Hilfe. Werde mal sehen ob ich damit weiter komme. :thumb:

@MathiasSimmack

An dem Aufbau der XML Datei kann ich leider nichts ändern. Diese Daten bekomme ich so zugesendet.

Melde mich wieder...

Gruß Frank

MathiasSimmack 30. Aug 2004 21:19

Re: XML Werte auslesen und in Memo anzeigen?!
 
Na ja, da kann man nix machen. Aber notfalls geht es eben auch mit Schleife. Muss es ja, wenn du die Daten nicht anders bekommst. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz