PHP - >如何检查XML是否为空

时间:2012-10-10 12:18:04

标签: php xml

我从特定ID后的请求中获取简单的xml内容。但有时ID不再可用,XML也是空的。

如果xml为空,我如何检查PHP?

如果有人有想法我会很感激,如果他能帮助我的话。

提前致谢。

5 个答案:

答案 0 :(得分:7)

如果您可以使用 SimpleXML 扩展名:

$xmlObject = new SimpleXMLElement($xmlText);
if ($xmlObject->count() == 0) {
    //it's empty
}
else {
    //XML object has children
}

此外,SimpleXML是一个非常方便的XML阅读器/编辑器。

详细信息:http://ua2.php.net/manual/en/book.simplexml.php

答案 1 :(得分:5)

我想这取决于你的意思是空的,如果整个文档是空的,你可以检查文档的字符串版本是否为空:

if (empty($xmlString)) 
{
    // is empty 
}

但是如果你期望一个根节点,你可能需要检查是否有任何子节点:

$xml = simplexml_load_file("test.xml");

if (empty($xml->getName()) && count($xml->children()) == 0) { 
    // is empty
}

希望有所帮助。

答案 2 :(得分:2)

只需在你的id之前使用(字符串)它就可以了。 例:- 你的代码是这样的 $ id = $ xml-> mail-> id;

然后就像这样 $ id =(字符串)$ xml-> mail-> id;

它会起作用

答案 3 :(得分:2)

只是将我的两分钱加到一个旧问题上,但最受好评的答案似乎建议使用 使用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,它没有指明他是否意味着节点或文件,但为了完整性,它是。

答案 4 :(得分:0)

尝试一下:

$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";
}