php – XML计数元素,如果id存在增加1
发布时间:2020-12-13 17:16:42 所属栏目:PHP教程 来源:网络整理
导读:我想要做的是计算根元素下的元素.然后检查同一级别上的一个id是否具有id值.发生这种情况时,需要增加1. 代码 public function _generate_id(){ $id = 0; $xpath = new DOMXPath($this-_dom); do{ $id++; } while($xpath-query("/*/*[@id=$id]")); return $id;
我想要做的是计算根元素下的元素.然后检查同一级别上的一个id是否具有id值.发生这种情况时,需要增加1.
代码 public function _generate_id() { $id = 0; $xpath = new DOMXPath($this->_dom); do{ $id++; } while($xpath->query("/*/*[@id=$id]")); return $id; } 例如xml <?xml version="1.0"?> <catalog> <book id="0"> <author>Gambardella,Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book> <book id="1"> <author>Ralls,Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description>A former architect battles corporate zombies,an evil sorceress,and her own childhood to become queen of the world.</description> </book> </catalog> 解决方法
您可以使用以下xpath查询来获取id属性的最大值:
$result = $xpath->query('/*/*[not(../*/@id > @id)]/@id'); 在您的函数中,您可以返回此值增加1: return intval($result->item(0)->nodeValue) + 1; 更新:您也可以使用XPath执行增量操作.注 return $xpath->evaluate('/*/*[not(../*/@id > @id)]/@id + 1'); |------- +1 in xpath 这将给你2 – 但作为一个双.我建议在返回结果之前转换为整数: return (integer) $xpath->evaluate('/*/*[not(../*/@id > @id)]/@id + 1'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |