php:Xpath ant唯一ID

时间:2010-12-21 20:39:07

标签: php xpath

我使用PHP和Xpath,当保存数据时,我需要插入唯一ID。 与SQL自动增量一样。

如何在Xpath中创建它? 文件:

<info>
  <id>1</id>
  <name>test</name>
</info>
<info>
  <id>2</id>
  <name>some</name>
</info>
....
<id>5</id>
<name>testttt</id>

2 个答案:

答案 0 :(得分:2)

我相信它会是这样的:

//info[last()]/id

所以,每个例子使用PHP的DOMDocument:

$dom = new DOMDocument;
$dom->load('data.xml');

$xpath = new DOMXPath($dom);
$lastId = $xpath->query('//info[last()]/id')->item(0)->nodeValue;
$nextId = $lastId+1;

以上假设最后一个节点具有最大的ID。

在您的情况下,单独使用XPath无法计算下一个ID。 XPath 2.0提供max函数来执行此操作:

max(//info/id)

但是,PHP内置库尚不支持XPath 2.0。

答案 1 :(得分:1)

  

我使用PHP和Xpath以及何时使用   保存数据我需要插入唯一ID。如   在SQL自动增量。

     

如何在Xpath中创建它?

id的新值可以在单个XPath 1.0表达式中计算

(//id)
  [not(. 
       <            
       (preceding::id|following::id|ancestor::id|descendant::id)
      )
  ]
    [1] +1

解释:此表达式从文档中的所有id元素中选择一个不小于文档中任何其他id元素的元素。然后将1添加到此值,我们将新值用作id。