【发布时间】:2014-12-02 10:59:13
【问题描述】:
我正在尝试以下但没有成功。谁能帮我解释一下为什么属性 imageId 没有改变?
$dom = new DOMDocument;
$dom->loadXML($appCom_file_name);
$frames = $dom->getElementsByTagName('frame');
foreach ($frames as $frame) {
if ($frame->getAttribute('imageId') == '') {
$frame->setAttribute('imageId', $id);
}
}
$dom->saveXML();
XML 来源:
<template>
<appCom>
<page>
<defaultValues>
<frame id="frame_01_0" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" />
<frame id="frame_02_0" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" />
<frame id="frame_03_0" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" />
</defaultValues>
</page>
<page>
<defaultValues>
<frame id="frame_01_1" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" />
<frame id="frame_02_1" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" />
<frame id="frame_03_1" deltaRotation="0" deltaScale="100" deltaX="0" deltaY="0" imageId="" />
</defaultValues>
</page>
</appCom>
</template>
【问题讨论】:
-
尝试使用引用的 foreach
foreach ($frames as &$frame) -
感谢@Justinas 的快速回复,但没有帮助。还有其他想法吗?
-
当你打印出
if里面的东西时,它会显示出来吗? -
@Justinas 是的,它已经显示出来了,我已经尝试过,看看它的效果如何。它正确循环所有节点并打印 if 中的任何内容,但属性没有更改。
标签: php xml setattribute