我使用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>
答案 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。