从Zend读取xml文件时出现问题

从Zend读取xml文件时出现问题,xml,zend-framework,Xml,Zend Framework,我创建了一个简单的xml文件来存储样式表的名称,其中是我的xml文件 <?xml version="1.0" encoding="UTF-8"?> <skin> <stylesheets> <stylesheet>default.css</stylesheet> </stylesheets> </skin> 但是它在非对象上调用成员函数toArray()。我做错了什么?我不会为此

我创建了一个简单的xml文件来存储样式表的名称,其中是我的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<skin>
    <stylesheets>
        <stylesheet>default.css</stylesheet>
    </stylesheets>
</skin>

但是它在非对象上调用成员函数toArray()。我做错了什么?

我不会为此使用
Zend\u Config\u Xml
。首先,它希望在XML中找到“部分”(例如“生产”、“测试”、“开发”)。为满足
zf
命名空间的需要,还引入了大量开销

相反,只需使用SimpleXML

$skinData = simplexml_load_file('./template/'.$this->_template.'/skins/'.$this->_skin.'/skin.xml');
foreach ($skinData->stylesheets->stylesheet as $stylesheet) {
    $this->view->headLink()->appendStylesheet(...);
}

我不会为此使用
Zend\u Config\u Xml
。首先,它希望在XML中找到“部分”(例如“生产”、“测试”、“开发”)。为满足
zf
命名空间的需要,还引入了大量开销

相反,只需使用SimpleXML

$skinData = simplexml_load_file('./template/'.$this->_template.'/skins/'.$this->_skin.'/skin.xml');
foreach ($skinData->stylesheets->stylesheet as $stylesheet) {
    $this->view->headLink()->appendStylesheet(...);
}

实际上,你的代码没有问题。这只是一个逻辑错误。您已经告诉Zend_Config_Xml将样式表解析为数组。但由于您只提供了一个样式表,所以它不会将其作为数组进行解析

你的解决方案

只需将另一个样式表添加到xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<skin>
    <stylesheets>
        <stylesheet>default.css</stylesheet>
    </stylesheets>
</skin>


default.css
另一个.css

实际上,您的代码没有问题。这只是一个逻辑错误。您已经告诉Zend_Config_Xml将样式表解析为数组。但由于您只提供了一个样式表,所以它不会将其作为数组进行解析

你的解决方案

只需将另一个样式表添加到xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<skin>
    <stylesheets>
        <stylesheet>default.css</stylesheet>
    </stylesheets>
</skin>


default.css
另一个.css

我找到了相同的…再次添加相同的css文件。 Zend将只打印一次

<?xml version="1.0" encoding="UTF-8"?>
<skin>
    <stylesheets>
        <stylesheet>style.css</stylesheet>
        <stylesheet>style.css</stylesheet>
    </stylesheets>
</skin>

样式表
样式表

我找到了相同的…再次添加相同的css文件。 Zend将只打印一次

<?xml version="1.0" encoding="UTF-8"?>
<skin>
    <stylesheets>
        <stylesheet>style.css</stylesheet>
        <stylesheet>style.css</stylesheet>
    </stylesheets>
</skin>

样式表
样式表

谢谢你的建议,但你仍然可以帮我调试出哪里出了问题。顺便说一句,相同类型的编码正在加载模板信息。。。(我也应该粘贴它,但它是一样的)@mrN我猜,我会说它的“部分”功能对你不利,但是我现在没有一个PHP设置要测试。也许可以将您的
var_dump
调用更改为
var_dump($skinData->toArray())
我同意,
Zend_Config_Xml
通常用于存储配置信息,但OP尝试的内容仍然是可能的,而不提供应用程序环境。因为,一个特定的阶段或节点只有在初始化过程中提供时才会被选择,比如new
Zend\u Config\u xml(“path.xml”,“production”)
谢谢你的建议,但是你仍然可以帮我调试出什么问题。顺便说一句,相同类型的编码正在加载模板信息。。。(我也应该粘贴它,但它是一样的)@mrN我猜,我会说它的“部分”功能对你不利,但是我现在没有一个PHP设置要测试。也许可以将您的
var_dump
调用更改为
var_dump($skinData->toArray())
我同意,
Zend_Config_Xml
通常用于存储配置信息,但OP尝试的内容仍然是可能的,而不提供应用程序环境。因为,一个特定的阶段或节点只有在初始化过程中提供时才会被选择,比如new
Zend\u Config\u xml(“path.xml”,“production”)
Wow,这是一个愚蠢的错误。我可以接受你的回答吗。但是我不想打电话给你,我不能告诉你。你知道别人发生了什么。好吧,我愿意接受这一点,因为你给了我一个正确的解决办法。而且+1太糟糕了,真是个愚蠢的错误。我可以接受你的回答吗。但是我不想打电话给你,我不能告诉你。你知道别人发生了什么。好吧,我愿意接受这一点,因为你给了我一个正确的解决办法。还有+1