我从一个特定的ID请求中获取简单的XML内容。但有时候这个ID不再可用,XML就是空的。
我该如何使用PHP检查一个XML是否为空?
如果有人有想法,我将不胜感激。
提前致谢。
马可
$xmlObject = new SimpleXMLElement($xmlText);
if ($xmlObject->count() == 0) {
//it's empty
}
else {
//XML object has children
}
<a>123</a>
和 <b/>
都计数为0。 - Jonas Äppelgran我想这取决于您对“空”的定义,如果整个文档为空,您可以使用以下代码检查文档的字符串版本是否为空:
if (empty($xmlString))
{
// is empty
}
但如果您期望的是根节点,您可能需要检查是否有任何子节点:
$xml = simplexml_load_file("test.xml");
if (empty($xml->getName()) && count($xml->children()) == 0) {
// is empty
}
仅仅是为了在一个老问题上增加一些我的看法,但是最受欢迎的答案似乎建议使用simplexml_load_file("test.xml");,然后测试您期望的节点不为空。由于如果文件为空,这将引发警告级别错误,因此我不同意,而是用文件大小的测试来包装调用。
$xmlInfo = new SplFileInfo('test.xml');
if((int) $xmlInfo->getSize() > 0)
{
$xml = simplexml_load_file($xmlInfo->getPath());
}
只需要在你的id前面加上(string)就可以了。
例如:
你的代码是这样的
$id = $xml->mail->id;
然后改成这样
$id = (string)$xml->mail->id;
就可以了。
Try This:
$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";
}
<?xml version="1.0"?>
或一个空的根元素时。因此,Ofir Baruch的问题是:如果XML文档为空,OP如何定义“空”? - feeela