从XML文件加载到PHP以生成内容

时间:2011-05-16 01:41:19

标签: php xml

所以我要做的是将XML文件中的数据加载到php中并使用这些变量生成内容。对于每个项目,我想获得一组新的变量值并将它们打印到页面上。如果有4个interfaceItems那么它应该打印4个带有4个唯一标题的displayWrappers。这不适合我。有更好或更有效的方法吗?我现在得到的错误是:

注意:尝试获取非对象的属性

警告:为foreach()提供的参数无效

<?php

$xmldata = simplexml_load_file('elements.xml');
foreach($xmldata->portfolio->interface->interfaceItem as $item) :?>
<?php
$title = ($item->title);
$desc = ($item->description);
$whatOne = ($item->whatOne);    
$whatTwo = ($item->whatTwo);
$location = ($item->location);      

?>
<div class="displayWrapper">
    <div class="display">
        <p> <?=$title ?> </p>
    </div>
</div>



<?php endforeach;?>




<portfolio>
<interface>
    <interfaceItem>
        <title>modi tempora</title>
        <decription>lorum ipsum</decription>
        <whatOne> dolor sit amet</whatOne>
        <whatTwo>sed quia non</whatTwo>         
        <location>i/blah.jpg</location>
    </interfaceItem>
    <interfaceItem>
        <title>magnam aliquam</title>
        <decription>omnis voluptas assumenda est, omnis dolor repellendus.</decription>
        <whatOne>expedita distinctio</whatOne>
        <whatTwo>possimus, omnis voluptas</whatTwo>         
        <location>i/blah2.jpg</location>
    </interfaceItem>
</interface>
</portfolio>

1 个答案:

答案 0 :(得分:0)

我将在黑暗中采取疯狂刺伤并将其减少到两个可能的问题中的一个或两个。

场景1

您的XML文件如下所示

<portfolio>
    <interface>
        <interfaceItem>

使用SimleXML,第一个元素是根节点。您需要更改代码才能使用

foreach ($xmldata->interface->interfaceItem as $item)

场景2

SimpleXML元素迭代区分大小写。如果您的XML看起来像这样

<root>
    <Portfolio>
        <Interface>
            <InterfaceItem>

您需要将代码更改为

foreach ($xmldata->Portfolio->Interface->InterfaceItem as $item)

更新

鉴于您的问题中的XML示例,如果这是elements.xml的内容,则只会是

foreach ($xmldata->interfaceItem as $item)