$xpath = new DOMXPATH($xml);
foreach($xpath->query("/root/info[name = '$c_name']") as $node)
{
$node->parentNode->removeChild($node);
}
在localhost上执行此代码时出现此错误。
警告:DOMXPath :: query():表达式无效
我猜在foreach循环中有一个错误。
答案 0 :(得分:0)
您的代码错过了错误处理,并且您创建xpath表达式的方式很容易被注入,这也很容易破坏它。
$xpath = new DOMXPATH($xml);
$expression = "/root/info[name = '$c_name']";
$result = $xpath->query($expression);
if (false === $result) {
throw new InvalidArgumentException(
sprintf(
'Xpath expression %s failed for input %s'
, var_export($expression, true)
, var_export($c_name, true)
)
);
}
foreach($result as $node)
{
$node->parentNode->removeChild($node);
}
此示例尚未处理注入问题,只是引入了正确的错误处理,以便您尽早意识到错误实际发生的位置。
如果您进一步分析它,您可能会发现单引号的问题。之前的Q& A涵盖了该主题: