php dom + in xml删除特定节点

时间:2011-07-13 14:31:29

标签: php xml dom

我想根据我在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");

XML文件

<location>

    <cubicle>
        <id> 6121</id>
        <status>2</status>
        <shift1>  
            <Employee1>Tom</Employee1>
        </shift1>           
        <shift2>  
            <Employee2>arum</Employee2>
        </shift2>
    </cubicle>
</location>

1 个答案:

答案 0 :(得分:1)

您正在使用带有%d的sprintf,但元素节点包含“6121”(请注意开头的空格)。

var_dump(sprintf('%d', ' 6121') === ' 6121'); // FALSE

使用%s代替。也。没有$record变量,因此您必须将代码更改为

$cubicle->parentNode->removeChild($cubicle);