Alan Storm No Frills Magento Layout:从内存加载XML文件报告错误


Alan Storm No Frills Magento Layout: loading XML file from memory reports an error

我正在运行Magento 1.7.0.2。在我的派生控制器类中,我有一个带有以下代码的操作:

公共函数indexAction() {

$layout = Mage::getSingleton('core/layout');
$xml = simplexml_load_string('<layout>
  <block type="core/text" name="root" output="toHtml">
    <action method="setText"><text>Hello!</text></action>
  </block>
</layout>');
$layout->setXml($xml);
$layout->generateBlocks();
echo $layout->getOutput();

}

我只是试图从一些XML作为字符串传递的布局,如在艾伦风暴的书No Frills Magento布局,但得到以下错误。我做错了什么?

为什么我的SimpleXMLElement不被转换为VarienSimplexmlElement,如果这是正确的方式加载XML布局文件从嵌入式XML编程测试和篡改的目的?

Recoverable Error: Argument 1 passed to Varien_Simplexml_Config::setXml() must be an instance of Varien_Simplexml_Element, instance of SimpleXMLElement given, called in /var/www/magpractice/app/code/local/Alanstormdotcom/Helloworld/controllers/IndexController.php on line 17 and defined  in /var/www/magpractice/lib/Varien/Simplexml/Config.php on line 133
#0 /var/www/magpractice/lib/Varien/Simplexml/Config.php(133): mageCoreErrorHandler(4096, 'Argument 1 pass...', '/var/www/magpra...', 133, Array)
#1 /var/www/magpractice/app/code/local/Alanstormdotcom/Helloworld/controllers/IndexController.php(17): Varien_Simplexml_Config->setXml(Object(SimpleXMLElement))
#2 /var/www/magpractice/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Alanstormdotcom_Helloworld_IndexController->indexAction()
#3 /var/www/magpractice/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#4 /var/www/magpractice/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#5 /var/www/magpractice/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#6 /var/www/magpractice/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#7 /var/www/magpractice/index.php(88): Mage::run('', 'store')
#8 {main}

原谅我的愚蠢。我忘记添加'Mage_Core_Model_Layout_Element'作为simplexml_load_string()的第二个参数。