сохранить опубликованные значения в XML в PHP - PullRequest
0 голосов
/ 23 ноября 2010
<root>
  <gallery name="First"/>
  <gallery name="Second"/>
  <gallery name="Third"/>
</root>

Я думаю, что я решил часть предыдущей проблемы и теперь правильный цикл foreach?Тем не менее я не могу получить его, чтобы сохранить xml.

$objXML = new SimpleXMLElement(XML_FILE_NAME, null, true);  
foreach($objXML->xpath('/root/gallery/@name') as $key => $old){
    $new = $_POST['name'][$key];
    echo "$key : $old : $new<br />\n";
    $old = $new; // this does nothing??
    }
$objXML->asXML(XML_FILE_NAME);

Эхо возвращает:
0: Первый: Первый Новый
1: Второй: Второй Новый
2: Третий: Третий Новый

Почему это не сохраняет новые опубликованные значения 'name' обратно в мой XML документ, что я делаю не так?

1 Ответ

1 голос
/ 23 ноября 2010

Вы находитесь в цикле.

Это означает, что каждый раз, когда цикл возвращается к другой точке $key и $old получают свои новые новые значения.

Я думаю, это то, что вы пытаетесь достичь (но я не уверен, что вы достигли цели)

foreach($objXML->xpath('/root/gallery/@name') as $key => $value){
    $new = $_POST['name'][$key];
    echo "$key : $old : $new<br />\n";
    $old = $value;
}

Из вашего комментария:

Вы можете проверить это здесь.

$objXML = new SimpleXMLElement(XML_FILE_NAME, null, true);  

$galleryLore = $objXML->gallery; // finding gallery
$i = 0;
foreach($galleryLore as $gallery){
  unset($gallery['name']); // We delete the old name
  $new = $_POST['name'][$i]; // We find the new name value
  $gallery->addAttribute('name', $new); // We add the new attribute we deleted before
  $i++;
}
...