Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML Einlesen (https://www.delphipraxis.net/200800-xml-einlesen.html)

DelTurbo 27. Mai 2019 17:25

XML Einlesen
 
Hallo,
ich peil das einfach nicht. Ich soll aus folgendem XML die <ticket> Daten auslesen. Ich komme leider nur an das erste dran. Wäre super wenn jemand einen Link hätte wie ich das machen muss. Oder mein kleine Beispiel ergänzen könnte damit ich auch an das 2. <ticket> usw. komme. Späer sind natürlich mehr als 2 Tickets enthalten.

Vielen dank im Voraus

Code:
  <?xml version="1.0" encoding="utf-8" ?>
- <ticketapi>
- <meta>
  <name>Test</name>
  <datum>09.07.2019</datum>
  <tickets>2</tickets>
  <in>0</in>
  <out>2</out>
  </meta>
- <ticket>
  <code>1234</code>
  <vorname>John</vorname>
  <nachname>Doe</nachname>
  <eingecheckt>0</eingecheckt>
  </ticket>
- <ticket>
  <code>5678</code>
  <vorname>Jane</vorname>
  <nachname>Doe</nachname>
  <eingecheckt>0</eingecheckt>
  </ticket>
  </ticketapi>
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  XMLDoc :IXMLDocument;
  Buffer :TMemoryStream;
  i      :Integer;
begin
    Buffer:=TMemoryStream.Create;
    IdHTTP1.Get('http://test.homesrv/app-api.php',Buffer);
    Buffer.Seek(0,0);
    XMLDoc:=newXMLDocument;
    XMLDoc.LoadFromStream(Buffer);
    XMLDoc.Active:=True;
    ShowMessage(XMLDoc.DocumentElement.ChildNodes['ticket'].ChildNodes['code'].NodeValue);
    ShowMessage(XMLDoc.DocumentElement.ChildNodes['ticket'].ChildNodes['code'].NodeValue);
    Buffer.Free;
end;

Luckie 27. Mai 2019 17:26

AW: XML Einlesen
 
Eine Schleife über alle Ticket-Knooten?

DeddyH 27. Mai 2019 17:36

AW: XML Einlesen
 
Aus dem Kopf im Editor getippt:
Delphi-Quellcode:
var
  Node: IXMLNode;
  XMLDoc :IXMLDocument;
  Buffer :TMemoryStream;
begin
  Buffer:=TMemoryStream.Create;
  try
    IdHTTP1.Get('http://test.homesrv/app-api.php',Buffer);
    Buffer.Seek(0, soFromBeginning);
    XMLDoc:=newXMLDocument;
    XMLDoc.LoadFromStream(Buffer);
    XMLDoc.Active:=True;
    Node := XMLDoc.DocumentElement.ChildNodes['ticket'];
    while Assigned(Node) do
      begin
        ShowMessage(Node.ChildNodes['code'].NodeValue);
        Node := Node.NextSibling;
      end;
  finally
    Buffer.Free;
  end;
end;

DelTurbo 27. Mai 2019 18:51

AW: XML Einlesen
 
Vielen Dank @DeddyH.
@Lukie Ja in einer Schleife. Das von DeddyH klappt wunderbar.

Vielen dank!!!! :thumb:


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:57 Uhr.

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