【问题标题】:GPX file validationGPX 文件验证
【发布时间】:2013-12-03 21:45:23
【问题描述】:

我正在尝试确保上传的文件是有效的 gpx 文件,并尝试了两种不同的检查(针对 xml),因为 GPX 是 xml(某种)。

第一次检查拒绝一个有效文件,并带有消息 no DTD found。

$dom = new DOMDocument;
$dom->Load($_FILES["gps"]["tmp_name"]);
if ($dom->validate()) {

}
else {
    echo '<script>alert("Not a valid GPS file!");</script>';            
    exit();
}

第二次检查不会拒绝 jpg 或 pdf 等无效文件。

$xmlcontents = XMLReader::open($_FILES["gps"]["tmp_name"]);

$xmlcontents->setParserProperty(XMLReader::VALIDATE, true);

if($xmlcontents->isValid()) {
}
else {
    echo '<script>alert("Not a valid GPS file!");</script>';            
    exit();
}

我做错了什么?!

【问题讨论】:

  • 也许你可以用这个:topografix.com/gpx_validation.asp
  • 有效的 xml 和格式不一样。 “有效” xml 仅表示文档符合 XML 要求。它没有说明 xml 的内容。格式良好意味着它的有效 XML AND 满足特定 DTD 的要求。 &lt;foo&gt;&lt;bar /&gt;&lt;/foo&gt; 是有效的 xml,但如果您针对(例如)X-HTML DTD 验证它,它的格式将不正确。
  • @LajosVeres 谢谢,但我无法在我的网站空间上安装任何东西。
  • @MarcB 谢谢!我只想检查文件是否是“真正的”XML,而不是可疑的东西。当然,除了扩展检查。
  • -&gt;isValid() 仅检查 xml 有效性。 -&gt;validate() 期望 DTD 检查格式正确,并且您的系统不能有 GPX dtd 可用于检查。

标签: php xml


【解决方案1】:

找到了解决办法!

 $xml=simplexml_load_file($_FILES["gps"]["tmp_name"]);
if($xml ===  FALSE)
{
    echo '<script>alert("Not a valid GPS file!");</script>';            
    exit();
} 

这对于 jpg、pdf 等返回 false,但接受 GPX。

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 2012-01-08
    • 2012-02-07
    • 2018-12-28
    • 2021-02-16
    • 2012-01-28
    • 2021-07-06
    • 2011-02-28
    • 2012-08-18
    相关资源
    最近更新 更多