我尝试以下内容但没有成功。谁可以帮我解决为什么属性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>
答案 0 :(得分:1)
我测试了您的代码,显然,我收到了$id
未定义的错误。您是否尝试更改此行:
$frame->setAttribute('imageId', $id);
到此:
$frame->setAttribute('imageId', $frame->getAttribute('id'));
当然,要将结果打印到屏幕,您可以使用echo
:
echo $dom->saveXML();
答案 1 :(得分:1)
感谢所有的反馈!
除了再次保存文件外,它不应输出任何内容。 ID当然是定义的,但我忘了把它包含在我的问题中。这现在有效:
$id = 1;
$dom = new DOMDocument;
$dom->loadXML(file_get_contents($appCom_file_name));
$frames = $dom->getElementsByTagName('frame');
foreach ($frames as $frame) {
if ($frame->getAttribute('imageId') == '') {
$frame->setAttribute('imageId', $id);
}
}
$dom->save($appCom_file_name);
答案 2 :(得分:-1)
我认为你必须使用带参数的保存XML ...这是我的灵感代码:
$dom = new DOMDocument();
$dom->loadXML($datas);
$svg = $dom->getElementsByTagName('svg');
$resize = $this->resize(452, 480, $res);
$svg->item(0)->setAttribute('width', $resize['w']);
$svg->item(0)->setAttribute('height', $resize['h']);
$datas = '<?xml version="1.0" encoding="UTF-8" tandalone="no"?>'.$dom->saveXML($svg->item(0));