web-dev-qa-db-fra.com

Stocker une réponse XML (transitoire)?

Je n'ai pas beaucoup travaillé avec XML, alors je me heurte un peu au mur:

function getapi() 
{
    $api_response = wp_remote_get( "http://example.com/getXML" );
    $data         = wp_remote_retrieve_body( $api_response );
    $output       = new SimpleXMLElement ($data );

    return $output;
}

Obtenir ou définir le transitoire

function transient()
{ 
    $transient = get_transient( 'transient_value' );

    if ( ! $transient ) {
        $transient = getapi();
        set_transient( 'transient_value', $transient, 180 );
    }

    return $transient;
}

Je peux facilement afficher les données, mais l'appel à partir d'un transitoire stocké entraîne l'affichage de cette erreur:

Node no longer exists in C:\xampplite\htdocs\...

Je ne suis pas sûr de l’étape supplémentaire que je dois effectuer pour stocker les données correctement.

Merci beaucoup!

Noel

2
Noel Tock

Selon à ce billet :

Impossible de sérialiser l'objet encapsulant des structures de bibliothèque tierces. Doit sérialiser le xml (en une chaîne) et le stocker en session et recharger le xml lors de la restauration à partir d'une session

Lorsque vous stockez un objet en transitoire, il est sérialisé et tous les objets ne sont pas capables de le faire correctement.

Stockez des données XML textuelles dans des éléments transitoires.

5
Rarst