2010-01-19 5 views

Répondre

1

si votre xml est déjà commandé du plus bas au plus haut, vous pouvez le faire cette requête 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; 

autrement, vous pouvez trouver l'id max comme si (id en supposant est un attribut):

$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"; 

les impressions ci-dessus « 3 », de sorte que votre nouvel identifiant est 4

ou utiliser Veger's solution qui travaillera également

0

Trouver le plus haut ID dans votre fichier existant, en utilisant une requête XPath et code php.

$ids = $xml->xpath("element/id"); // or something that fits your XML document 
asort($ids);      // or use some other sorting algorithm 
$highest_id = end($ids); 

Je ne suis pas très bien informé sur les requêtes XPath, alors il pourrait y avoir un truc pour trier pendant la requête, je suppose, mais quelqu'un d'autre sera probablement le signaler si cet exemple peut être optimisé.

Ensuite, créez votre nouveau document XML et ajoutez-y l'ID le plus élevé.