Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML online auslesen (https://www.delphipraxis.net/135972-xml-online-auslesen.html)

blooddog_90 21. Jun 2009 12:43


XML online auslesen
 
Guten Tag alle zusammen!

Mein Anliegen besteht darin, eine XML Datei, welche online existiert auszulesen. Besser gesagt einen bestimmten Text.

Die XML sieht ungefähr so aus:

XML-Code:
<film>
 <jahr>2009</jahr>
 <name>Knowing</name>
</film>
<film>
 <jahr>2008</jahr>
 <name>Bella</name>
</film>
Nun würde ich gern in dieser XML nach dem String "Bella" suchen. Beziehungsweise überprüfen ob er überhaupt existiert.

Dazu muss ich doch bestimmt per IdHTTP die Datei runterladen. Ich weiß, wie ich navigiere. Aber nicht wie ichs als Datei speichere. Oder lohnt sich das überhaupt? Sollte man das überhaupt abspeichern?

Ich bitte um eure Mithilfe =)

Vielen Dank!

[edit=mkinzler]XML-Tag eingefügt Mfg, mkinzler[/edit]

jfheins 21. Jun 2009 12:50

Re: XML online auslesen
 
Du kannst per idhttp Den Text in einem String speichern, und dann darin suchen - erst runterladen um sie dann von der festplatte zu öffnen ist nicht nötig ;)

P.S. Schau dir mal den Rückgabewert von IdHTTP.Get an ...

MASU 21. Jun 2009 13:21

Re: XML online auslesen
 
Hallo,

das ist eigentlich ganz einfach, wie eben mit allem was bekannt ist.

Du kannst dazu den in Delphi vorhandenen XML Server verwenden (Komponente) oder wie ich gerne selbst den XML DOM von Microsoft laden. Dazu must du in Delphi nur zuerst die XML TypeLibrary importieren (ist bei jeder Delphi Version anders, bei D2007 z.B.: Komponenten => Komponente importieren... => Typbibliothek importieren). Die liegt dann im Delphi import Pfad.

uses der TypeLibrary anmelden...
Delphi-Quellcode:
uses
  MSXML2_TLB, ...
kleine function schreiben...

Parameter ist Pfad und Dateiname oder direkt übers Netz eine URL

Delphi-Quellcode:
procedure LoadXML(FURL:String);
var
  Doc: DOMDocument30;
  DomList: IXMLDOMNodeList;
  PNode:IXMLDOMNode;
  n,i,Count:Integer;
  s,Topic,Item:String;
  DeviceObj:TDeviceObj;
begin
    try

      //create document
      Doc := CreateOleObject('Msxml2.DOMDocument.3.0') as DOMDocument30;
      Doc.async := False;
      Doc.resolveExternals := False;

      //load
      Count:=0;
      repeat
        inc(count);
        LoadResult:=Doc.load(FURL);
        if NOT LoadResult then begin
          sleep(20*Count);
        end;
      until (LoadResult OR (Count>=3));

    finally
 
      if LoadResult then begin
        try

          DomList:=Doc.getElementsByTagName('name');
          for n:=0 to DomList.length-1 do begin

            s:=DomList[n].NodeName

            s:=(DomList[n] as IXMLDOMElement).getAttribute('Darsteller');


          end;

          //close xml doc
          Doc := nil;
        except
          on E:Exception do ShowMessage('Execption at load/read XML:'+E.Message);
        end;
      end;
    end;

end;
[edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit]

Namenloser 21. Jun 2009 13:35

Re: XML online auslesen
 
Such mal hier im Forum nach HimXML oder nach der XMLLib von Muetze1.

jfheins 21. Jun 2009 13:40

Re: XML online auslesen
 
Problem ist erstmal gelöst mittels TIdHTTP.Get() und AnsiContainsText() ;)

sx2008 21. Jun 2009 15:52

Re: XML online auslesen
 
Dein Problem lässt sich mit einem XPATH Ausdruck lösen:
XML-Code:
//film[name='Bella']
Das bedeutet: suche alle Elemente <film> die ein Element <name> mit dem Inhalt Bella haben.
Wenn dich ein Vendor-Lockin auf Microsoft nicht stört, dann kannst du mit MSXML alle Teilaufgaben erschlagen.
* Herunterladen der XML-Daten unter Beachtung der Proxy-Einstellungen
* Parsen und Suchen in den XML-Daten


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.

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