Andreas: XML Ausgabe mit PHP

Hallo,
ich möchte ein XML Feed erzeugen, mit PHP.
Dazu habe ich mir folgendes gebastelt:

function xml(){
  global $mkportals, $DB, $mklib, $Skin, $mklib_board;
  $rss_path_config = "mkportal/modules/rss/config.php";
  include $rss_path_config;

echo '
  <?xml version="1.0" encoding="ISO-8859-1" ?>
  <rss version="0.91">
   <channel>
    <title>'.$title.'</title>
    <link>'.$link.'</link>
    <description>'.$description.'</description>
    <language>'.$language.'</language>
    <copyright>'.$copyright.'</copyright>
    <image>
     <url>'.$rss_logo.'</url>
     <title>'.$rss_logotitel.'</title>
     <link>'.$rss_logolink.'</link>
    </image>';
  $strSQL = "Select $domain_id, $domain_body, $domain_title From $domain_table Order by $domain_id ASC limit 15";
  $query = $DB->query($strSQL);
  while( $row = $DB->fetch_row($query) ) {
   echo '
    <item>
     <title>'.$row['titel'].'</title>
     <link>'.$domain_link.$row['id'].'</link>
     <description>'.$row['body'].'</description>
    </item>';
  }
  echo '
   </channel>
  </rss>';
 }

Das was von PHP ausgespuckt wird ist aber kein XML sondern HTML. Was mach ich falsch bzw. wie funktioniert das mit der XML Ausgabe?

Andreas

  1. Hi,

    welchen Mime-Type sendest du?

    1. Hi,

      welchen Mime-Type sendest du?

      Äh - ich dachte der im Script angegebene ist der Mimi-Type?
      <?xml version="1.0" encoding="ISO-8859-1" ?>

      Bitte kläre mich auf.

      Andreas

      1. Hallo Andreas.

        welchen Mime-Type sendest du?
        Äh - ich dachte der im Script angegebene ist der Mimi-Type?

        Die arme Mimi hat doch damit nichts zu tun.
        Manuel fragte dich nach dem gesendeten MIME-Typen.

        <?xml version="1.0" encoding="ISO-8859-1" ?>

        Dass ist das, was am Anfang des XML-Dokumentes steht, richtig.

        Willst du, dass das XML auch als XML interpretiert wird, musst du den entsprechenden header in deinem PHP-Skript senden.

        Einen schönen Montag noch.

        Gruß, Ashura

        --
        Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        30 Days to becoming an Opera8 Lover -- Is Opera9 what Firefox 2 should be?
        Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Konqueror 3.3.2 | Netscape 4.7 | IE 6.0
        Use OpenOffice.org
        1. OK, hab den Header mal eingebaut, geht immer noch nicht.
          Hier jetzt meine Funktion. Kann es daran liegen dass die Funktion in einer Klasse eingebunden ist? Eigentlich ja nicht.

          Hier mal der Link dazu:
          http://www.mkportal-support.de/index.php?ind=rss

          function xml(){
            global $mkportals, $DB, $mklib, $Skin, $mklib_board;
            //die("A");
            $rss_path_config = "mkportal/modules/rss/config.php";
            include $rss_path_config;
            header("Content-type: text/xml");
            echo '
            <?xml version="1.0" encoding="ISO-8859-1" ?>
            <rss version="0.91">
             <channel>
              <title>'.$title.'</title>
              <link>'.$link.'</link>
              <description>'.$description.'</description>
              <language>'.$language.'</language>
              <copyright>'.$copyright.'</copyright>
              <image>
               <url>'.$rss_logo.'</url>
               <title>'.$rss_logotitel.'</title>
               <link>'.$rss_logolink.'</link>
              </image>';
            $strSQL = "Select $domain_id, $domain_body, $domain_title From $domain_table Order by $domain_id ASC limit 15";
            $query = $DB->query($strSQL);
            while( $row = $DB->fetch_row($query) ) {
             $res = $row[$domain_body];
             $res=str_replace("%26amp;","&",$res);
             $res=str_replace("&","&",$res);
             $res=str_replace("%2C",",",$res);
             $res=str_replace("<","<",$res);
             $res=str_replace("&rt;",">",$res);
             $res=str_replace(">",">",$res);
             $res=str_replace("[tb:break]","<br>",$res);
             $body = $res;

          $res = $row[$domain_title];
             $res=str_replace("%26amp;","&",$res);
             $res=str_replace("&","&",$res);
             $res=str_replace("%2C",",",$res);
             $res=str_replace("<","<",$res);
             $res=str_replace("&rt;",">",$res);
             $res=str_replace(">",">",$res);
             $res=str_replace("[tb:break]","<br>",$res);
             $title = $res;
             echo '
              <item>
               <title><![CDATA['.$title.']]></title>
               <link><![CDATA['.$domain_link.$row[$domain_id].']]></link>';
             if ($rss_showtext == '1')
               echo '
               <description><![CDATA['.$body.']]></description>';
             echo '
              </item>';
            }
            echo '
             </channel>
            </rss>';
           }

          1. Heureka
            Es funktioniert.
            Vielen Dank.

            Gruß Andreas

            1. Hallo Andreas.

              Es funktioniert.

              Nein, ganz und gar nicht:
              Opera-Fehlermeldung: XML-Interpretation fehlgeschlagen

              Einen schönen Montag noch.

              Gruß, Ashura

              --
              Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              30 Days to becoming an Opera8 Lover -- Is Opera9 what Firefox 2 should be?
              Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Konqueror 3.3.2 | Netscape 4.7 | IE 6.0
              Use OpenOffice.org
              1. echo '
                  <?xml version="1.0" encoding="ISO-8859-1" ?>

                dann sag ihm doch auch warum.

                echo '<?xml version="1.0" encoding="ISO-8859-1" ?>

                ist besser, da kein zeichen vor dem xml-opener sein darf (nl)

                1. Hallo fanelf.de.

                  echo '
                    <?xml version="1.0" encoding="ISO-8859-1" ?>

                  dann sag ihm doch auch warum.

                  Das hat dedlfix bereits getan.

                  Einen schönen Dienstag noch.

                  Gruß, Ashura

                  --
                  Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                  30 Days to becoming an Opera8 Lover -- Is Opera9 what Firefox 2 should be?
                  Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Konqueror 3.3.2 | Netscape 4.7 | IE 6.0
                  Use OpenOffice.org
                  1. aber ohne lösung. offensichtlich konnte er damit nichts anfangen. manche muß man ja mit der nase drauf stoßen.

          2. echo $begrüßung;

            OK, hab den Header mal eingebaut, geht immer noch nicht.

            Ich weiß nicht, was du für eine Fehlermeldung bekommst, aber ich erhalte:

            XML-Verarbeitungsfehler: XMP Processing Instruction nicht am Beginn von externer Entität
            Adresse: http://www.mkportal-support.de/index.php?ind=rss
            Zeile Nr. 2, Spalte 3:
              <?xml version="1.0" encoding="ISO-8859-1" ?>

            Beseitige das in der Meldung bemängelte Problem.

            echo "$verabschiedung $name";