AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML online auslesen

Ein Thema von blooddog_90 · begonnen am 21. Jun 2009 · letzter Beitrag vom 21. Jun 2009
Antwort Antwort
blooddog_90

Registriert seit: 23. Sep 2007
24 Beiträge
 
Turbo Delphi für Win32
 
#1

XML online auslesen

  Alt 21. Jun 2009, 13:43
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]
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: XML online auslesen

  Alt 21. Jun 2009, 13:50
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 ...
  Mit Zitat antworten Zitat
MASU

Registriert seit: 21. Jun 2009
Ort: Stuttgart
1 Beiträge
 
#3

Re: XML online auslesen

  Alt 21. Jun 2009, 14:21
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]
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: XML online auslesen

  Alt 21. Jun 2009, 14:35
Such mal hier im Forum nach HimXML oder nach der XMLLib von Muetze1.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: XML online auslesen

  Alt 21. Jun 2009, 14:40
Problem ist erstmal gelöst mittels TIdHTTP.Get() und AnsiContainsText()
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: XML online auslesen

  Alt 21. Jun 2009, 16:52
Dein Problem lässt sich mit einem XPATH Ausdruck lösen:
//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
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 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