簡體   English   中英

更新XML節點屬性

[英]Update XML node attribute

我正在嘗試以下方法而沒有成功。 誰能幫我解決為什么屬性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>

我測試了您的代碼,顯然,我收到未定義$id的錯誤。 您是否嘗試過更改此行:

$frame->setAttribute('imageId', $id);

對此:

$frame->setAttribute('imageId', $frame->getAttribute('id'));

當然,要將結果打印到屏幕上,您可以使用echo

echo $dom->saveXML();

感謝您的所有退款!

它不應該輸出任何東西,而是再次保存文件。 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);

我認為您必須將saveXML與參數結合使用...這是我的啟發代碼:

$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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM