我有一个类似的xml文件:
<model_info>
<status>available</status>
<model_name>Alexia</model_name>
</model_info>
现在在我的php代码中,我想检查xml文件是否包含<status></status>
标签。
$xml = simplexml_load_file($xml_path);
//if xml contain <status></status> tags-->
{
$model_name = $xml->model_name;
} else { exit; }
有人可以建议检查这种情况的正确方法或语法是什么?
答案 0 :(得分:1)
您应该使用Xpath:$result = $xml->xpath('//model_name[../status]');
并使用count($result)
来计算$result
中的点击次数。
答案 1 :(得分:1)
(只是用SimpleXML显示解决方案,因为它是你在问题中使用的)
我发现处理此问题的最佳方法是在节点上使用getName()
,并检查它是否为空(== ''
)。
否则,您可能会遇到类似<something></something>
等节点的问题以及基于节点值的其他类型的检查。
$str = '<model_info>
<status>available</status>
<model_name>Alexia</model_name>
</model_info>';
$xml = simplexml_load_string($str);
function node_exists($simplexml_node) {
return $simplexml_node->getName() != '';
}
var_dump(node_exists($xml->model_name));
var_dump(node_exists($xml->model_oh_nooooo));
输出:
bool(true)
bool(false)
所以用你的例子:
$str = '<model_info>
<model_name>Alexia</model_name>
</model_info>';
$xml = simplexml_load_string($str);
function node_exists($simplexml_node) {
return $simplexml_node->getName() != '';
}
if (node_exists($xml->status)) {
$model_name = $xml->model_name;
}
var_dump($model_name);
输出:
NULL