从PHP函数生成XML(我做错了什么?)

时间:2009-11-02 11:46:07

标签: php xml wordpress

这是一个生成一些XML的简单php脚本:

<?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();
?>

似乎在我的XML中使用函数 the_title()最终会在xml树之外打印(下面是上面代码中的浏览器输出):

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

如果我用一些静态文本替换函数 the_title(),上面的代码似乎工作正常,xml是根据需要生成的,例如

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

生成的XML(这正是我想要的):

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

the_title()是Wordpress函数,我正在尝试以XML格式呈现页面。

2 个答案:

答案 0 :(得分:3)

我认为像the_post()和the_title()这样的函数会立即输出值而不是返回它。其中一些具有像get_the *()这样的等价物,它将返回值而不是打印;这可能就是你想要的。

This answer可能有用

答案 1 :(得分:1)

我也不建议使用DOMDocument 生成 XML。它相当缓慢且耗费内存。考虑使用XMLWriter或“pupre-php”方式。