我从特定ID后的请求中获取简单的xml内容。但有时ID不再可用,XML也是空的。
如果xml为空,我如何检查PHP?
如果有人有想法我会很感激,如果他能帮助我的话。
提前致谢。
马
答案 0 :(得分:7)
如果您可以使用 SimpleXML 扩展名:
$xmlObject = new SimpleXMLElement($xmlText);
if ($xmlObject->count() == 0) {
//it's empty
}
else {
//XML object has children
}
此外,SimpleXML是一个非常方便的XML阅读器/编辑器。
答案 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";
}