XML Einleseproblem ?

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

  • XML Einleseproblem ?

    Hi!

    Ich lese folgende XML-Datei : http://www.ppedv.com/us/popconnect.xml mit folgender Funktion ein!

    PHP-Code:
    $file "http://www.ppedv.com/us/popconnect.xml";  

    function 
    xml2php($file) {

       
    $xml_parser xml_parser_create();
       if (!(
    $fp fopen($file"r"))) {
           die(
    "unable to open XML");
       }
       
    $contents=fread($fp,filesize($file));
       
    fclose($fp);
       
    xml_parse_into_struct($xml_parser$contents$arr_vals);
       
    xml_parser_free($xml_parser);

       return 
    $arr_vals;
    }

    $arr_xml xml2php($file);
    print_r($arr_xml); 
    So funktioniert es aber nicht, weil filesize() bei URLs nicht funktioniert.
    Also, Datei lokal speichern und und $file in $file="popconnect.xml"; ändern.
    Das funzt dann. Filesize sagt : 11113

    Da ich aber nun das XML vom Web aus lesen will, ermittel ich die Dateigröße folgender Maßen :
    PHP-Code:
      $fp2=fopen($file,"r");
      
    $inhalt '';
      while (
    $buf fread($fp24096)) $inhalt.= $buf;
      
    fclose($fp2);
      
    $fsize=strlen($inhalt); 
    So kann ich auch das XML aus dem Web erfolgreich lesen.
    $fsize ist ebenfalls 11113!

    Aber lokal bekomm ich 375 Einträge im Array und wenn ich das XML übers Web lese nur 239 Einträge?

    Woran kann das liegen! Danke!

  • #2
    keine ahnung.. hast du dir angeschaut, an welcher stelle die unterschiede auftauchen, sprich, welche knoten bleiben auf der strecke?

    Kommentar


    • #3
      Also bei beiden gibt es keine Unterschiede!

      Bei dem holen von Tag <Char_Desc_2000> hört er mitten im Text auf. Aber mir fällt dort auch kein Zeichen auf was das verursachen könnte!

      So sieht das Array am Ende aus :

      ...
      [238] => Array
      (
      [tag] => GERMAN
      [value] =>
      [type] => cdata
      [level] => 3
      )

      [239] => Array
      (
      [tag] => CHAR_DESC_2000
      [type] => open
      [level] => 4
      [value] => popConnect verbinden den Microsoft Exchange Server mit Ihren eMail Konten im Internet.
      Das versenden von eMails funktioniert mit dem Exchange Server alleine. Beim empfangen hilft popConnect.

      Im ersten Schritt sammelt popConnect die eMail Konten ein und stellt diese
      im zweiten Schritt an den Arbeitsplatz in Ihr Outlook zu. So können z.B. alle
      Mails von Ihrer Domain über einen Sammelkonto geholt werden oder über einzelne Konten. Für die Verwaltung steht eine eigene Oberfläche zur
      Verfügung, mit der der Admin alle erforderlichen Einstellungen nahezu
      ohne Vorkenntnisse vornehmen kann.

      Jede Aktivität von popConnect wird in einem Logfile verzeichnet und lässt
      sich grafisch auswerten. popConnect kann je nach Tag und Zeit in
      unterschiedlichen Intervallen gestartet werden. Jede Verbindung
      zumInternet wie Fest, Router oder DFÜ wird genutzt. Ein Regelwerk
      erlaubt es den Empfang großer Mails auf nachts zu verschieben. So hilft
      popConnect günstig und zentral die optimale Mailverbindung ins Internet darzustellen.

      Situation: Eine Domain:
      Sie holen zentral für alle Benutzer einen Sammel-Account ab und Exchange
      verteilt diese eMails an die einzelnen Benutzer.

      Mehrere Email-Konten:
      Sie holen zentral für alle Benutzer die verschiedenen POP3 & IMAP4 Konten
      ab und verteilen Sie an die einzelne
      )

      )
      und in der XML-Datei gehts so weiter :

      Mehrere Email-Konten: Sie holen zentral für alle Benutzer die verschiedenen POP3 & IMAP4 Konten ab und verteilen Sie an die einzelnen Benutzer. Standleitung ins Internet: Îhr Exchange Server befindet sich hinter einer Firewall. popConnect bringt die eMails wieder ins Netzwerk. Einwahl über DSL: Bei Einwahl über DSL wird das Abholen der eMails durch den kostenfreien Zeitplandienst ppSchedule automatisiert.</Char_Desc_2000>
      </German>
      </Program_Descriptions>
      ab da fehlt dann alles!

      ????

      Kommentar


      • #4
        zeig bitte noch mal deinen aktuellen code zum auslesen.

        Kommentar


        • #5
          PHP-Code:
          $file "http://www.ppedv.com/us/popconnect.xml";

          function 
          xml2php($file) {

             
          // Größe ermitteln
             
          $fp=fopen($file,"r");
             
          $inhalt '';
             while (
          $buf fread($fp4096)) $inhalt.= $buf;
             
          fclose($fp);
             
          $fsize=strlen($inhalt);
             
          // Parsen
             
          $xml_parser xml_parser_create();
             if (!(
          $fp fopen($file"r"))) {
                 die(
          "unable to open XML");
             }
             
          $contents=fread($fp,$fsize);
             
          fclose($fp);
             
          xml_parse_into_struct($xml_parser$contents$arr_vals);
             
          xml_parser_free($xml_parser);

             return 
          $arr_vals;
          }

          $arr_xml xml2php($file);

          print_r($arr_xml); 

          Kommentar


          • #6
            teste doch mal, ob $inhalt richtig ermittel wird.

            übrigens, warum nochmal alles in $contents einlesen, wenn du doch schon die ganze datei in $inhalt hast?

            Kommentar


            • #7
              ja, ich hatte das aus testzwecken doppelt gemacht.
              aber dadurch das ich den inhalt nur einmal ein lese funktioniert es auf einmal. Sehr putzig!

              Trotzdem Danke!

              Kommentar

              Lädt...
              X