【问题标题】:SVG to JSON on server side?SVG到服务器端的JSON?
【发布时间】: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


【解决方案1】:

如果您可以在服务器上安装 Node.js,您或许可以使用 fabric.js 来解析 SVG,然后将对象导出为 JSON。

https://github.com/kangax/fabric.js

http://kangax.github.com/fabric.js/svg_rendering/

【讨论】:

  • 很遗憾我们无法安装 Node.js。如果可以,请向我们推荐任何其他解决方案,最好是基于 php 的解决方案
【解决方案2】:

你在 require_once() 函数中犯了一个错误。 php 文件的路径应该在括号中,如下所示:

require_once("PeachSVG.php");

对于字符串,您似乎使用了不好的双引号。您可能从某个地方复制了它们。因为这些是左双引号““”(U+201C)和右双引号“””(U+201D)。在代码中它不应该是这样的:

“some your string”

但是像这样:

"some your string"

【讨论】:

    【解决方案3】:

    您的脚本在我的本地主机服务器上运行得非常好,但我必须删除您拥有的引号并将其替换为我的记事本 ++ 中的一个,这在我看来就像字符串引号。如果还没有找到解决方案,希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 2013-05-16
      • 2015-03-13
      • 2020-01-22
      相关资源
      最近更新 更多