2009-11-02 8 views
0

Heres un simple script php qui génère du XML:XML Génération de fonctions PHP (ce que je fais mal?)

<?php 
// create doctype 
$dom = new DOMDocument("1.0"); 

// display document in browser as plain text 
header("Content-Type: text/plain"); 

// create root element 
$root = $dom->createElement("page"); 
$dom->appendChild($root); 

// loop through all posts 
while (have_posts()) : the_post(); 

    // create child element 
    $item = $dom->createElement("title"); 
    $root->appendChild($item); 

    // add title data 
    $text = $dom->createTextNode(the_title()); 
    $item->appendChild($text); 

endwhile; 

// save and display tree 
echo $dom->saveXML(); 
?> 

Il semble que l'utilisation d'une fonction the_title() dans mon XML se termine l'impression à l'extérieur de l'arbre xml (ci-dessous est la sortie du navigateur à partir du code ci-dessus):

This is my second postHello world!<?xml version="1.0"?> 
<page><title></title><title></title></page> 

le code ci-dessus semble fonctionner très bien si je remplace la fonction the_title() avec un texte statique, le XML est généré au besoin, par exemple si

$text = $dom->createTextNode("Title-goes-here"); 

Le XML généré est (ce qui est exactement ce que je veux):

<?xml version="1.0"?> 
<page><title>Title-goes-here</title><title>Title-goes-here</title></page> 

the_title() est une fonction Wordpress, et je suis en train de rendre la page au format XML.

+0

Pouvez-vous nous montrer ce que vous avez dans la fonction the_title()? – Pasta

Répondre

3

Je pense que les fonctions telles que the_post() et the_title() afficheront immédiatement la valeur au lieu de la renvoyer. Certains d'entre eux ont des équivalents comme get_the *() qui retournera la valeur au lieu d'imprimer; c'est probablement ce que tu veux.

This answer pourrait être utile

+0

Super! Je suppose que cela aurait aidé si j'avais mentionné WordPress quelque part. Merci pour votre aide. – mozami

1

Je recommande également de ne pas générer XML à l'aide DOMDocument. C'est plutôt lent et consomme beaucoup de mémoire. Pensez à utiliser XMLWriter ou "pupre-php" façon.

+0

Merci FractalizeR, j'apprécie le pourboire! – mozami

Questions connexes