我有一个令人兴奋的xml文件,当我创建一个新的xml文件时,id为1 - 20我需要它来将ID添加到文件中我该怎么办?
我知道如何使用SQL而不是使用xml
请帮助
答案 0 :(得分:1)
如果您的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(假设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”,因此您的新ID为4
或使用Veger's solution也可以使用
答案 1 :(得分:0)
使用一些XPath查询和php代码查找现有文件中的最高ID。
$ids = $xml->xpath("element/id"); // or something that fits your XML document
asort($ids); // or use some other sorting algorithm
$highest_id = end($ids);
我对xpath查询知之甚少,所以在我想的查询过程中可能有一些技巧可以对它进行排序,但如果可以优化这个例子,其他人可能会指出这一点。
接下来创建新的XML文档并向其添加最高ID。