如何让simpleXML创建一个ID

时间:2010-01-19 08:45:08

标签: php xml simplexml

我有一个令人兴奋的xml文件,当我创建一个新的xml文件时,id为1 - 20我需要它来将ID添加到文件中我该怎么办?

我知道如何使用SQL而不是使用xml

请帮助

2 个答案:

答案 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。