我想根据我在xml中传递的id删除XML中的特定节点。 以下似乎不起作用请帮助我。
$id = $_GET['nodeId'];
$dom = new DOMDocument;
$dom->load('Seat_matrix.xml');
$xpath = new DOMXPath($dom);
$query = sprintf('/location/cubicle[./id = "%d"]', $id);
foreach($xpath->query($query) as $cubicle) {
$record->parentNode->removeChild($cubicle);
}
$dom->save("Seat_matrix.xml");
<location>
<cubicle>
<id> 6121</id>
<status>2</status>
<shift1>
<Employee1>Tom</Employee1>
</shift1>
<shift2>
<Employee2>arum</Employee2>
</shift2>
</cubicle>
</location>
答案 0 :(得分:1)
您正在使用带有%d的sprintf,但元素节点包含“6121”(请注意开头的空格)。
var_dump(sprintf('%d', ' 6121') === ' 6121'); // FALSE
使用%s代替。也。没有$record
变量,因此您必须将代码更改为
$cubicle->parentNode->removeChild($cubicle);