если ваш xml уже упорядочен от низшего к высшему, вы можете выполнить этот запрос xpath:
$res = $doc->xpath('/list/a[not(@id <= preceding-sibling::a/@id) and ' .
'not(@id <= following-sibling::a/@id)]/@id');
$nextId = is_array($res) && count($res) ? (intval($res[0]->id) + 1) : 0;
в противном случае вы можете найти максимальный идентификатор следующим образом (при условии, что id является атрибутом):
$xml = '<list><a id="1" /><a id="2" /><a id="3" /></list>';
$doc = simplexml_load_string($xml);
$max = -1;
foreach ($doc->xpath('/list/a/@id') as $el) {
$i = intval($el->id); if ($i > $max) $max = $i;
}
echo "Max: $max";
вышеприведенный выводит «3», поэтому ваш новый идентификатор равен 4
или используйте решение Вегера , которое также будет работать