【问题标题】:Generating XML from PHP functions (what am i doing wrong?)从 PHP 函数生成 XML(我做错了什么?)
【发布时间】:2009-11-02 11:46:06
【问题描述】:

这是一个生成 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 格式呈现页面。

【问题讨论】:

  • 你能告诉我们你在 the_title() 函数中有什么吗?

标签: php xml wordpress


【解决方案1】:

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

This answer 可能有用

【讨论】:

  • 超级!我想如果我在某处提到 WordPress 会有所帮助。感谢您的帮助。
【解决方案2】:

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

【讨论】:

  • 感谢 FractalizeR,感谢您的提示!
猜你喜欢
  • 2019-11-13
  • 2018-02-24
  • 2015-11-19
  • 1970-01-01
  • 2011-11-03
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多