XML Link mit PHP auslesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.
    Last edited by mermshaus; 21-06-2009, 07:34.

    Comment


    • #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.
      Last edited by mkb_webprint; 27-06-2009, 09:19.

      Comment


      • #4
        Originally posted by mkb_webprint View Post
        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.

        Comment


        • #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

          Comment


          • #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

            Comment


            • #7
              Originally posted by Slava View Post
              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 .

              Comment


              • #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).

                Comment


                • #9
                  Originally posted by mkb_webprint View Post
                  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.

                  Comment

                  Working...
                  X