2014-01-09 3 views
0

У меня есть этот XML примерзначение изменения XML-узла с SimpleXML

<items> 
<item> 
    <id>k1</id> 
    <price>456</price> 
</item> 
<item> 
    <id>k2</id> 
    <price>609</price> 
</item> 
</items> 

код PHP

$xml = simplexml_load_file(address of xml file); 
    foreach ($xml->item as $item){ 
       if($item->id == 'k2') { 
        item->price = 800; 
      } 
    } 

, если я хочу, чтобы изменить значение второго элемента с SimpleXML, как я могу это сделать? Я знаю, что я могу читать и сохранять значение переменной с этой ценой $ val = item->; но если я хочу изменить значение с помощью этого простого элемента кода -> price = 800; это не working.why бывает, что это простая вещь, но все-таки трудно .. Спасибо

+0

ли вы пытаетесь обновить XML? Если это так, это не сработает. Вам придется экспортировать XML снова. – Mave

+0

Я просто хочу изменить цену 609 на 800. спасибо – user3071235

+0

@ user3071235 Вам нужно экспортировать XML-строку через ['SimpleXML :: asXML()'] (http://us2.php.net/manual/en/simplexmlelement .asxml.php) –

ответ

0

Использование xpath для выбора <item> вы хотите, и обновить его:

$xml = simplexml_load_string($x); // assume XML in $x 

$result = $xml->xpath("/items/item[id = 'k2']"); 
$result[0]->price = 800; 

echo $xml->asXML(); 

видеть, что это работает: https://eval.in/88021

+0

Спасибо за ваш ответ .. но у меня есть еще одна проблема сейчас, и я не вижу, работает ли это решение для меня. Моя проблема в том, что в переменной $ x я хочу загрузить xml с моего жесткого диска. Если я использую simplexml_load_file для загрузки xml-файла в $ x, то у меня есть предупреждение, когда я использую simplexml_load_string ($ x); Предупреждение говорит Entity: строка 12: ошибка парсера: начальный тег ожидается, '<' не найден. – user3071235

Смежные вопросы