Чтобы найти узлы, используйте XPath .
$data->xpath('//gig[@id="2"]');
Он вернет массив со всеми <gig/>
узлами с атрибутом id
, значение которого равно 2. Обычно он будет содержать 0 или 1 элемент. Вы можете изменить их напрямую. Например:
$data = simplexml_load_string(
'<data>
<gig id="1">
<date>December 19th</date>
<venue>The Zanzibar</venue>
<area>Liverpool</area>
<telephone>Ticketline.co.uk</telephone>
<price>£6</price>
<time>Time TBA</time>
</gig>
<gig id="2">
<date>Sat. 16th Jan</date>
<venue>Celtic Connection, Classic Grand</venue>
<area>Glasgow</area>
<telephone>0141 353 8000</telephone>
<price>£17.50</price>
<time>7pm</time>
</gig>
</data>'
);
$nodes = $data->xpath('//gig[@id="2"]');
if (empty($nodes))
{
// didn't find it
}
$gig = $nodes[0];
$gig->time = '6pm';
die($data->asXML());
Удаление произвольных узлов на порядок сложнее, поэтому гораздо проще изменить значения, чем удалять / воссоздавать узел.