【发布时间】:2012-04-05 00:31:30
【问题描述】:
我们的 Web 应用程序正在服务器上存储 SVG 文件,我们希望从服务器端的 SVG 文件中获取 JSON 输出。 我研究了PETESAIA's SVG to JSON php 程序。 但我得到的输出是 null 或一个空数组。
<?php
require_once “PeachSVG.php”;
$filename = “filename-2012-03-06.svg”;
$json = PeachSVG::convert($filename, $to_json = true);
//$json = convert($filename, $to_json = true); //also used this one
var_dump(json_decode($json, true));
?>
这个php代码,PeachSVG.php和svg文件在同一个目录下。
任何人都可以建议我在哪里做错了吗?
或在服务器端将 SVG 替换为 JSON 的任何替代方案
编辑: 回应 @halfer 和他关于为什么我们需要 SVG 的服务器端验证(转换为 JSON)的询问。 我们有一个客户端 SVG(RaphaelJs)网络应用程序,用户可以在其中执行某些操作,输出被发送到我们的服务器并保存在我们的服务器上并发布在网站上。我们希望确保输出文件在发布到网站之前经过验证。为此,我们需要进行服务器端验证,以确保用户不会滥用应用程序中设置的规则。
Raphael.serialize 无法使用,因为它在客户端将 SVG 转换为 JSON,这可能会被用户滥用。所以我们将 SVG 文档作为字符串发送到服务器端。
【问题讨论】:
-
您的用例是什么?您是否在服务器上保存 SVG 文档并希望在浏览器上呈现它们?如果是这样,它们不能使用 Raphael 或其他东西直接通过 AJAX 呈现吗?
-
您是否为上面的代码打开了通知和所有错误报告,顺便说一句?也许有一个 buglet 需要追踪?
-
是的,我们的 SVG 文档在服务器上,但我们不需要在浏览器上渲染它。我们需要使用 SVG 的 JSON 来进行验证。
-
能否不使用 XMLReader,以便根据 DTD 进行验证?或者加载到 SimpleXML 并使用 XPath 检查?如果您能够解释为什么要使用 JSON 进行验证,以及您的验证是什么,那么有人可能会给您更好的建议。
-
酷。好的,你能不能不使用
Raphael.serialize(),然后在服务器上解码 JSON 并以这种方式运行检查?
标签: php json svg server-side