2015-06-29 4 views
-1

У меня есть этот 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> 

Я нашел узел это:

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

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

Почему не работает?

ответ

1

Ваш код работает отлично. Он устанавливает последний узел первого элемента с именем 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> 
+0

Wow. .. очень просто !!! Thxx много: P – Adonias