PHP:解析xml和检查文件的内容超出了标题

时间:2016-02-29 15:11:55

标签: php xml

在发布此处之前,我试图在网上查看此内容,似乎无法找到我正在寻找的答案。我一直在探索XML解析,并且一直在稳步前进,但我遇到了绊脚石。我要做的是检查源中的XML是否包含标题之外的任何内容(在这种情况下,XML的标题只是:<?xml version="1.0" encoding="UTF-8"?>)。如果提要有内容,我可以做我需要做的一切(无论是显示它还是用结果填充数据库)但是当提要不可用时,生成的XML文档只显示标题而不显示任何其他内容。

所以,我希望能够检查XML文档是否在标题之后有任何内容,如果是,则更新本地保存的XML文件,如果没有,则显示错误而不覆盖内容本地文件。

我原来的代码是:

$acc = new DOMDocument();
$acc->load(url for xml file here);

$acc->save(filepath to saved xml here);
$filepath = (same filepath to use as check);

if((is_file($filepath))&&(file_exists($filepath))){
    echo "XML Data successfully written to directory.";
}else{
    echo "XML data has failed to be written to the directory.";
}

..但显然这只是检查文件是否存在,而不是其中有任何有意义的内容。如果XML服务器处于脱机/不可用状态,它仍会输出XML文件,但只有标题。所以我尝试了这个:

$acc = new DOMDocument();
$acc->load(XML URL);

if(!empty($acc)){//so, something came in from the xml server 
    if(is_null($acc){//Is it empty?
        echo"Server unavailable, try later.";
    }else{
        $acc->save(filepath to saved XML);
        $filepath = (same filepath to use as check check);
        if((is_file($filepath))&&(file_exists($filepath))){
            echo "XML Data successfully written to directory.";
        }else{
            echo "XML data has failed to be written to the directory.";
        }
    }
}else{
    echo"XML server unavailable for request at present";
}

..但没有快乐。非常感谢任何帮助...我知道我做错了什么,但真的很感激任何指针...

提前致谢:)

1 个答案:

答案 0 :(得分:2)

如果XML无效,DOMDocument类将不会加载XML - 因为服务器返回404或类似内容,或者因为没有XML内容。它返回false并且在任何一种情况下都会输出警告。

如果您对在错误日志中看到警告感到高兴,并且您不需要区分服务器错误和您的&#34;空&#34; XML文件,您可以简单地执行:

$acc = new DOMDocument();
if ($acc->load("35702954.xml")) {
    $acc->save($filepath);
    if(is_file($filepath)){
        echo "XML Data successfully written to directory.";
    }else{
        echo "XML data has failed to be written to the directory.";
    }
}else{
    echo"XML server unavailable for request at present";
}

file_exists是多余的,因为is_file已经检查文件是否存在。