我从某个 ID 后的请求中获取简单的 xml 内容。但有时 ID 不再可用并且 XML 为空。
如果 xml 为空,如何使用 PHP 检查?
如果有人有想法,如果他能帮助我,我将不胜感激。
提前致谢。
马可
如果您可以使用SimpleXML扩展:
$xmlObject = new SimpleXMLElement($xmlText);
if ($xmlObject->count() == 0) {
//it's empty
}
else {
//XML object has children
}
此外,SimpleXML 是一个非常方便的 XML 阅读器/编辑器。
我想这取决于你的意思是空的,如果整个文档是空的,你可以检查文档的字符串版本是否为空:
if (empty($xmlString))
{
// is empty
}
但是如果您期望一个根节点,您可能需要检查是否有任何子节点:
$xml = simplexml_load_file("test.xml");
if (empty($xml->getName()) && count($xml->children()) == 0) {
// is empty
}
希望有帮助。
只需在您的 id 之前使用 (string) 即可。例如:- 你的代码是这样的 $id = $xml->mail->id;
然后让它就像这样 $id = (string)$xml->mail->id;
它会起作用的
只是将我的两分钱添加到一个旧问题中,但评分最高的答案似乎建议使用 simplexml_load_file("test.xml"); 然后测试您期望的节点是否为空。因为如果文件为空,这会引发警告级别错误,所以我不同意,而是使用文件大小测试来包装调用。
$xmlInfo = new SplFileInfo('test.xml');
if((int) $xmlInfo->getSize() > 0)
{
$xml = simplexml_load_file($xmlInfo->getPath());
}
当然 OP 已经问过了How can I check with PHP if a xml is empty
,它没有指定他是指节点还是文件,但为了完整性,它是存在的。
尝试这个:
$xml_str = '<?xml version="1.0" standalone="yes"?><Name/>';
$xml = new SimpleXMLElement($xml_str);
if(empty($xml->Name[0])){
// ITS EMPTY !! DO SOMETHING
echo "ITS EMPTY ASJK";
}