Php 更改最后一个子节点的节点值

Php 更改最后一个子节点的节点值,php,domdocument,getelementsbytagname,Php,Domdocument,Getelementsbytagname,我有这个xml文件,我尝试更改最后一个节点的nodeValue,但不起作用: <?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> &l

我有这个xml文件,我尝试更改最后一个节点的nodeValue,但不起作用:

<?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>

.DS_商店
ID2PDF_log_1.xml
ID2PDF_log_12.xml
ID2PDF_log_15.xml
我在以下位置找到了节点:

$Sig = new DomDocument();
$Sig->loadXML($xml);
$dom = $Sig->documentElement;

$Node = $dom->getElementsByTagName('file')->item(0);
$Node->lastChild->nodeValue = 'ID2PDF_log_17.xml'; // <-- Not working
$Sig=newDOMDocument();
$Sig->loadXML($xml);
$dom=$Sig->documentElement;
$Node=$dom->getElementsByTagName('file')->item(0);

$Node->lastChild->nodeValue='ID2PDF_log_17.xml';// 你的代码运行得非常好。它将带有标记名“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>

ID2PDF_log_17.xml//← 改变
ID2PDF_log_1.xml
ID2PDF_log_12.xml
ID2PDF_log_15.xml

在你的问题中,我知道你想更改最后一个节点值。因此,如果要更改最后一个节点值而不是当前正在更改的第一个节点,只需将项计数器更改为3(计数器从0开始)

loadXML($xml);
//-----------------------------------------------↓
$Node=$Sig->getElementsByTagName('file')->item(3);
$Node->lastChild->nodeValue='ID2PDF_log_17.xml';//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>

.DS_商店
ID2PDF_log_1.xml
ID2PDF_log_12.xml
ID2PDF_log_17.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_17.xml</file> //← changed
</files>