Ваш код работает отлично. Он устанавливает последний узел первого элемента с именем TagName 'file' в 'ID2PDF_log_17.xml' Но вам не нужно $dom = $Sig->documentElement;
. И изменить $dom
к $Sig
$Sig = new DomDocument();
$Sig->loadXML($xml);
$dom = $Sig->documentElement; // ← delete
//--------↓ change to $Sig
$Node = $dom->getElementsByTagName('file')->item(0);
$Node->lastChild->nodeValue = 'ID2PDF_log_17.xml';
Выход:
<?xml version="1.0"?>
<files>
<file>ID2PDF_log_17.xml</file> //← changed
<file>ID2PDF_log_1.xml</file>
<file>ID2PDF_log_12.xml</file>
<file>ID2PDF_log_15.xml</file>
</files>
В вашем вопросе я понимаю, вы хотите изменить последний nodeValue. Так что, если вы хотите изменить последний nodeValue вместо первого узла, который вы в настоящее время меняется, просто изменить счетчик пункта до 3 (счетчик начинается с 0)
<?php
$xml = '<?xml version="1.0"?>
<files>
<file>.DS_Store</file>
<file>ID2PDF_log_1.xml</file>
<file>ID2PDF_log_12.xml</file>
<file>ID2PDF_log_15.xml</file>
</files>';
$Sig = new DomDocument();
$Sig->loadXML($xml);
//-----------------------------------------------↓
$Node = $Sig->getElementsByTagName('file')->item(3);
$Node->lastChild->nodeValue = 'ID2PDF_log_17.xml'; // <-- Not working
echo $Sig->saveXML();
?>
Выход:
<?xml version="1.0"?>
<files>
<file>.DS_Store</file>
<file>ID2PDF_log_1.xml</file>
<file>ID2PDF_log_12.xml</file>
<file>ID2PDF_log_17.xml</file> //← changed
</files>
Wow. .. очень просто !!! Thxx много: P – Adonias