XML Link mit PHP auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML Link mit PHP auslesen

    Hallo,

    ja ich weiß wenn man Topictitel liest könnte man sich denken, wieso sucht der junge nicht einfach mal ne runde bei Google.
    Das habe ich aber schon getan und habe irgendwie nix vernünftiges für mein Problem gefunden.

    Also um das Verständnis für mein Problem zu erleichtern ein paar Erklärungen, ich möchte für ein Browsergame eine Art Galaxytool erstellen. Mit dem Galaxytool sollen Spionageberichte welche in XML erstellt wurden, ausgelesen und verarbeitet werden so das wichtige Inhalte später über Frontend/ Datenbank abgerufen werden können.

    Aber alle Seiten die sich mit damit befassen XML Daten per PHP auszulesen beziehen sich auf eine vorhandene XML Datei wie z.b. bei dem Skript hier:

    PHP-Code:
    <?php

    if (file_exists('artikel.xml')) {
       
    $xml simplexml_load_file('artikel.xml');

    echo 
    $xml->teaser[0];

    } else {
       exit(
    'Konnte Datei nicht laden.');
    }
    ?>
    Mein Problem ist aber das die XML Daten nicht als Datei sondern nur als link zur Verfügung steht wie z.B. => http://report.fatal-vortex.de/report...f7c98.82599507
    also wenn jemand eine Idee hat wie ich an die XML Daten komme währe ich sehr dankbar.

    Grüsse Cloudskipper



    Sollte dieses Problem schonmal aufgetaucht sein tut es mir leid, meine Board und Websuche hat mir leider keine Ergebnisse gebracht.

  • #2
    file_exists() kannst du nicht über das HTTP-Protokoll verwenden. Prüf einfach, ob simplexml_load_file kein richtiges Objekt oder false zurückgibt.

    Gruß Marc

    PS: Dein Link wird nicht als XML zurückgegeben. Das macht vermutlich nichts aus, aber ein header('Content-type: application/xml'); oder so könnte helfen.
    Zuletzt geändert von mermshaus; 21.06.2009, 08:34.

    Kommentar


    • #3
      Hallo Cloudskipper,
      PHP: simplexml_load_file - Manual , schau da mal in die Parameterliste rein ;-) Der erste Parameter filename.

      PHP-Code:
      <?php
      if ($xml simplexml_load_file(rawurlencode('http://www.adresse.de/deiner/datei.xml')) {
      print_r($xml);
      } else {
      exit(
      'Konnte Datei nicht öffnen.');
      }
      ?>
      So sollte es funzen ;-) rawurlencode brauchst du aber seit PHP 5.1.0 nicht, da macht es das von alleine. Du brauchst das auch nur wenn du Parameter übergibst. Zum Beispiel, wenn du ein PHP-Script aufrufst, das dynamisch eine XML-Datei erstellt. Bei weiteren Fragen kannst du mich gerne ansprechen.
      Zuletzt geändert von mkb_webprint; 27.06.2009, 10:19.

      Kommentar


      • #4
        Zitat von mkb_webprint Beitrag anzeigen
        rawurlencode brauchst du aber seit PHP 5.1.0 nicht, da macht es das von alleine.
        Es ist in der von dir gezeigten Form sowieso unsinnig.
        Das macht aus der Adresse nämlich http%3A%2F%2Fwww.adresse.de%2Fdeiner%2Fdatei.xml, und so lässt die sich nicht mehr öffnen.

        Du brauchst das auch nur wenn du Parameter übergibst.
        Korrektur: Das wendet man, wenn überhaupt, nur auf einzelne Path- bzw. Querystring-Bestandteile an.

        http%3A%2F%2Fwww.adresse.de%2Fdeiner%2Fdatei.xml wäre nur dann sinnvoll, wenn das selbst einen URL-Parameterwert darstellen soll.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ich mach das immer über curl

          PHP-Code:
                      $ch curl_init($url); 
                          
          curl_setopt($chCURLOPT_USERAGENT$_SERVER['HTTP_USER_AGENT']); 
                          
          curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                          
          curl_setopt($chCURLOPT_ENCODING,'gzip');
                          if((
          ini_get('open_basedir') == '') && (ini_get('safe_mode') == 'Off')) 
                              
          curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
                          
          curl_setopt($chCURLOPT_CONNECTTIMEOUT5); 
                          
          curl_setopt($chCURLOPT_FAILONERROR1); 
                        
          $data=@curl_exec($ch);
                    if (
          $data==false)
                     return 
          '';
                     
                          
          $xml = new SimpleXMLElement($data);

          uswusw

          Kommentar


          • #6
            curl ist einfach zu viel schreib arbeit.
            wenn curl da ist, dann muss auch allowurlopen (php.ini) längst eingeschaltet sein.
            PHP-Code:
            $xml simplexml_load_string(file_get_contents($url)); 
            Slava
            bituniverse.com

            Kommentar


            • #7
              Zitat von Slava Beitrag anzeigen
              curl ist einfach zu viel schreib arbeit.
              wenn curl da ist, dann muss auch allowurlopen (php.ini) längst eingeschaltet sein
              1. Nö die paar Kümmerzeilen - und hat Vorteile
              2. das gilt auch für fopen und file_get_contents .

              Kommentar


              • #8
                Wozu file_get_contents() dann kann er die Url auch dierekt in simplexml_load_file($url) packen. Und wenn allowurlopen off ist mit fsockopen versuchen die Quelle zu holen (kann aber auch deaktiviert sein, manche Hoster sind das sehr Konsequent).

                Kommentar


                • #9
                  Zitat von mkb_webprint Beitrag anzeigen
                  Hallo Cloudskipper,
                  PHP: simplexml_load_file - Manual , schau da mal in die Parameterliste rein ;-) Der erste Parameter filename.

                  PHP-Code:
                  <?php
                  if ($xml simplexml_load_file(rawurlencode('http://www.adresse.de/deiner/datei.xml')) {
                  print_r($xml);
                  } else {
                  exit(
                  'Konnte Datei nicht öffnen.');
                  }
                  ?>
                  So sollte es funzen ;-) rawurlencode brauchst du aber seit PHP 5.1.0 nicht, da macht es das von alleine. Du brauchst das auch nur wenn du Parameter übergibst. Zum Beispiel, wenn du ein PHP-Script aufrufst, das dynamisch eine XML-Datei erstellt. Bei weiteren Fragen kannst du mich gerne ansprechen.
                  Bei manchen Providern läuft eine PHP5 Version mit Einstellungen wo keine Parameter mehr erlaubt sind bei simple_load_file() ; fopen() etc.

                  Kommentar

                  Lädt...
                  X