SimpleXML动态属性

时间:2017-06-07 21:33:05

标签: php xml loops foreach simplexml

嘿,我很难弄清楚如何为此生成代码。

$revImages = $revXML->addChild('images');
$revImage = $revImages->addChild('image');
$revImage->addAttribute('src', '001.jpg');

最后一行是我需要的静态条目。是否有一个foreach语句我可以用来根据目录中的图像自动生成最后一行,因此它会输出...

<images>
    <image src = "001.jpg"/>
    <image src = "002.jpg"/>
    <image src = "003.jpg"/>
    <image src = "004.jpg"/>
    <image src = "005.jpg"/>
    <image src = "006.jpg"/>
    <image src = "007.jpg"/>
    <image src = "008.jpg"/>
    <image src = "009.jpg"/>
    <image src = "010.jpg"/>
</images>

先谢谢!

2 个答案:

答案 0 :(得分:2)

使用glob函数的解决方案(查找与模式匹配的路径名):

foreach (glob("*/yourdirectory/*.jpg") as $filepath) {
    $revImage = $revImages->addChild('image');
    $revImage->addAttribute('src', $filepath);
}

答案 1 :(得分:1)

就是这样:

$revImages = $revXML->addChild('images');
foreach ($some_data as $value) {
    // yes, everytime you need to create new `$revImage`
    $revImage = $revImages->addChild('image');
    $revImage->addAttribute('src', $value);
}

其中$some_data是您拥有的值数组。

<强>更新

if ($handle = opendir($path)) { 
    // create parent node before while-loop
    $revImages = $revXML->addChild('images'); 
    while (false !== ($entry = readdir($handle))) { 
        if ($entry != "." && $entry != "..") { 
            // yes, everytime you need to create new $revImage 
            $revImage = $revImages->addChild('image'); 

            // `$entry` is already a filename, there's no need to iterate over it
            $revImage->addAttribute('src', $entry); 
        } 
    } 
    closedir($handle); 
}