2010-08-18 9 views
0

C'est un peu compliqué à expliquer, alors merci d'avance de me contacter. J'utilise Kohana PHP framework pour développer une application. J'ai une fonction de modèle qui accepte les paramètres pour une recherche, et devrait renvoyer une page de style XML. J'ai besoin que cela soit lu par le contrôleur avec SimpleXML. Des idees pour faire cela?Lecture de XML renvoyé par fonction avec SimpleXML

$o = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
    $o .= "<feed>\n"; 
    $o .= "\t<search_phrase>$q</search_phrase>\n"; 

    if(isset($entries)){ 
     uasort($entries, 'compare_weight'); 

     /** 
     * Build the xml data 
     */ 

     foreach($modules as $module){ 
     $o .= "\t<search_location>$module</search_location>\n"; 
     } 

     foreach($entries as $k=>$entry){ 
      $o .= "\n\t<entry>\n"; 
      $o .= "\t\t<title>$entry[title]</title>\n"; 
      $o .= "\t\t<url>$entry[url]</url>\n"; 
      $o .= "\t\t<weight>$entry[weight]</weight>\n"; 
      $o .= "\t\t<module>$entry[module]</module>\n"; 

      if($entry['owners']){ 
       foreach($entry['owners'] as $owner){ 
        $o .= "\t\t<owners>\n"; 
        $o .= "\t\t\t<owner_id>$owner[owner_id]</owner_id>\n"; 
        $o .= "\t\t\t<owner_name>$owner[owner_name]</owner_name>\n"; 
        $o .= "\t\t\t<profile_link>$owner[profile_link]</profile_link>\n"; 
        $o .= "\t\t</owners>\n"; 
       } 
      } 

      $o .= "\t</entry>\n"; 
     }  
    }else{ 
     $o .= "\t<noresult>true</noresult>\n"; 
    } 

    $o .= "</feed>\n"; 

    return $o; 

Les fonctions de contrôleur comme ça ... Il est le plus proche, je suis en mesure de venir à envelopper ma tête comment faire cela.

$return= $this->search->search($_GET); 

    $xml = new SimpleXMLElement($return); 
    die($xml); 

Renvoie un document vierge avec 44 lignes vides. Toute direction serait utile.

+0

Je suggère d'utiliser DOMDocument pour construire votre XML car il fournit un solide API –

Répondre

0

Essayez de changer le retour de votre flux xml $ à:

return echo $o; 
+0

Cela a renvoyé une erreur de syntaxe pour moi. Merci pour la réponse. – bradenkeith