Генерация XML из функций PHP (что я делаю не так?) - PullRequest
0 голосов
/ 02 ноября 2009

Вот простой PHP-скрипт, который генерирует XML:

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

Похоже, что использование функции the_title () в моем XML приводит к печати за пределами дерева 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 ]

3 голосов
/ 02 ноября 2009

Я думаю, что такие функции, как the_post () и the_title () будут немедленно выводить значение, а не возвращать его. Некоторые из них имеют эквиваленты, такие как get_the * (), которые будут возвращать значение вместо печати; это, вероятно, то, что вы хотите.

Этот ответ может быть полезен

1 голос
/ 02 ноября 2009

Я бы также не рекомендовал генерировать XML с использованием DOMDocument. Это довольно медленно и занимает много памяти. Попробуйте использовать XMLWriter или «pupre-php».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...