Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    126

    Parser xml di una pagina php(header xml)

    Ciao ragazzi ho un problemino con il parser xml di una pagina php....

    In effetti io ho una pagina php che mi genera un xml per un rss(rss.php).
    la inserisco nel parser...
    e non mi restituisce nulla se uso il path interno al server cartella/rss.php
    mentre con:
    http://www.miosito.it/cartella/rss.php funziona perchè come se il browser eseguisse la pagina.

    Ecco come faccio il parser e la pagina php ha imposto un header xml.

    Codice PHP:
    $filename0="rss.php";

    $item_counter0 0;
    $item_data0 = array();
    $xml_current_tag_state0 '';

    function 
    startElementHandler0$parser0$element_name0$element_attribs0 ){
        global 
    $item_counter0;
        global 
    $item_data0;
        global 
    $xml_current_tag_state0;
        
    $xml_current_tag_state0 $element_name0;
    }

    function 
    endElementHandler0$parser0$element_name0 ){
        global 
    $item_counter0;
        global 
    $item_data0;
        global 
    $xml_current_tag_state0;
        
    $xml_current_tag_state0 '';
        if( 
    $element_name0 == "ITEM" ) {
            
    $item_counter0++;
        }
    }

    function 
    characterDataHandler0$parser0 $data0 ){
        global 
    $item_counter0;
        global 
    $item_data0;
        global 
    $xml_current_tag_state0;
        if( 
    $xml_current_tag_state0 == '' ) {
            return;
        }
        if( 
    $xml_current_tag_state0 == "TITLE" ) {
            
    $item_data0[$item_counter0]["title"] = $data0;
        }
        
        if( 
    $xml_current_tag_state0 == "LINK" ) {
            
    $item_data0[$item_counter0]["link"] = $data0;
        }
            if( 
    $xml_current_tag_state0 == "DESCRIPTION" ) {
            
    $item_data0[$item_counter0]["description"] = $data0;
        }
         if( 
    $xml_current_tag_state0 == "PUBDATE" ) {
            
    $item_data0[$item_counter0]["pubDate"] = $data0;
        }


    //-----------------------------------------------------------------------------------------------//
    if( !($xml_parser0 xml_parser_create()) ){
        die(
    "Impossibile creare l' XML parser!");
    }

    xml_set_element_handler($xml_parser0"startElementHandler0""endElementHandler0");
    xml_set_character_data_handler($xml_parser0"characterDataHandler0");

    if( ! (
    $fp0 fopen"$filename0"r" )) ){echo "Impossibile aprire il file xml!";}
    while( 
    $data0 fread($fp04096) ){
        if( !
    xml_parse($xml_parser0$data0feof($fp0)) )    {
            break; 
    // esce dal loop quando finisce
        
    }
    }
    xml_parser_free($xml_parser0);

    echo
    "[b]Dal Wiki[/b]";
    echo 
    "
     "
    ;
        echo 
    "[url='".$item_data0[0]["link"]."']".$item_data0[0]["title"]."[/url]";
        echo 
    "
    "
    ;
            echo 
    $item_data0[0]["description"];
            echo 
    "
    "
    ;
            echo 
    "
    "
    ;
            echo 
    $item_data0[0]["pubDate"]; 

  2. #2
    E' una cosa abbastanza logica. Se richiami il file con un path del file system stai leggeno il codice sorgente PHP, mentre se lo richiami attraverso il web server, stai leggendo l'XML che genera lo script.

    Utilizza le seguenti funzioni per poter ottenere l'XML richiamando il file tramite file system:

    http://www.php.net/ob_start
    http://www.php.net/include
    http://www.php.net/ob_get_clean

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    126
    Grazie per avermi risposto...

    Mi potresti fare un esempio semplice visto che non sono molto pratico?

    Grazie mille

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    126
    io utilizzo ob_start e l'end ma non mi funzion alo stesso help me please :-(

  5. #5
    A me funziona perfettamente, posta il codice che stai utilizzando.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    126
    Ciao ecco il file che genera l'rss e poi lo do in pasto al parser xml:

    Codice PHP:
    <?php

    ob_start
    ();

    header('Content-Type: text/xml; charset=' get_option('blog_charset'), true);
    $more 1;

    ?>
    <?php 
    echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'?>

    <rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        <?php do_action('rss2_ns'); ?>
    >

    <channel>
        <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
        <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
        <link><?php bloginfo_rss('url'?></link>
        <description><?php bloginfo_rss("description"?></description>
        <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000'get_lastpostmodified('GMT'), false); ?></pubDate>
        <?php the_generator'rss2' ); ?>
        <language><?php echo get_option('rss_language'); ?></language>
        <?php do_action('rss2_head'); ?>
        <?php while( have_posts()) : the_post(); ?>
        <item>
            <title><?php the_title_rss() ?></title>
            <link><?php the_permalink_rss() ?></link>
            <comments><?php comments_link(); ?></comments>
            <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000'get_post_time('Y-m-d H:i:s'true), false); ?></pubDate>
            <dc:creator><?php the_author() ?></dc:creator>
            <?php the_category_rss() ?>

            <guid isPermaLink="false"><?php the_guid(); ?></guid>
    <?php if (get_option('rss_use_excerpt')) : ?>
            <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
    <?php else : ?>
            <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
        <?php if ( strlen$post->post_content ) > ) : ?>
            <content:encoded><![CDATA[<?php the_content() ?>]]></content:encoded>
        <?php else : ?>
            <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
        <?php endif; ?>
    <?php 
    endif; ?>
            <wfw:commentRss><?php echo get_post_comments_feed_link(); ?></wfw:commentRss>
    <?php rss_enclosure(); ?>
        <?php do_action('rss2_item'); ?>
        </item>
        <?php endwhile; ?>
    </channel>
    </rss>
    <?php

    ob_end_flush
    ();

    ?>

  7. #7
    Studiati questo codice:

    Codice PHP:
    <?php 
    ob_start
    ();
    include(
    dirname(__FILE__) . '/cartella/rss.php');
    $xml ob_get_clean();

    var_dump($xml);
    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    126
    Allora pazientissimo amico:

    spara.php

    Codice PHP:
    <?php
    ob_start
    ();
    include(
    dirname(__FILE__) . '/wp-rss2.php');
    $xml ob_get_clean();

    var_dump($xml);
    ?>
    questo è wp-rss2.php
    Codice PHP:
    <?php


    if (empty($wp)) {
        require_once(
    './wp-load.php');
        
    wp('feed=rss2');
    }

    require (
    ABSPATH WPINC '/feed-rss2.php');

    ?>
    e questo è feed-rss2.php
    Codice PHP:
    <?php
    header
    ('Content-Type: text/xml; charset=' get_option('blog_charset'), true);
    $more 1;

    ?>
    <?php 
    echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'?>

    <rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        <?php do_action('rss2_ns'); ?>
    >

    <channel>
        <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
        <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
        <link><?php bloginfo_rss('url'?></link>
        <description><?php bloginfo_rss("description"?></description>
        <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000'get_lastpostmodified('GMT'), false); ?></pubDate>
        <?php the_generator'rss2' ); ?>
        <language><?php echo get_option('rss_language'); ?></language>
        <?php do_action('rss2_head'); ?>
        <?php while( have_posts()) : the_post(); ?>
        <item>
            <title><?php the_title_rss() ?></title>
            <link><?php the_permalink_rss() ?></link>
            <comments><?php comments_link(); ?></comments>
            <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000'get_post_time('Y-m-d H:i:s'true), false); ?></pubDate>
            <dc:creator><?php the_author() ?></dc:creator>
            <?php the_category_rss() ?>

            <guid isPermaLink="false"><?php the_guid(); ?></guid>
    <?php if (get_option('rss_use_excerpt')) : ?>
            <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
    <?php else : ?>
            <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
        <?php if ( strlen$post->post_content ) > ) : ?>
            <content:encoded><![CDATA[<?php the_content() ?>]]></content:encoded>
        <?php else : ?>
            <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
        <?php endif; ?>
    <?php 
    endif; ?>
            <wfw:commentRss><?php echo get_post_comments_feed_link(); ?></wfw:commentRss>
    <?php rss_enclosure(); ?>
        <?php do_action('rss2_item'); ?>
        </item>
        <?php endwhile; ?>
    </channel>
    </rss>
    Mi da quest'errore:
    Errore interpretazione XML: non well-formed
    Indirizzo: http://srv-vod-test/blog/spara.php
    Linea numero 1, colonna 7:string(1977) "<?xml version="1.0" encoding="UTF-8"?>
    ------^


    GRazie per la pazienza che stai avendo con me oggi :-P

  9. #9

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    126
    Scusa continuo a no capire perchè mi da errore sull'xml che prima non dava....

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.