【问题标题】:svg shape nested in shape -- no parse error嵌套在形状中的 svg 形状——没有解析错误
【发布时间】:2012-03-01 15:26:41
【问题描述】:

我即将将 SVG 导入应用程序 (javascript),实际上工作得很好,除了如果形状是嵌套的,解析器 (DOMParser) 不会抛出解析错误。例如这段代码:

<rect
   style="fill:#393939;fill-opacity:1;stroke:none"
   id="rect3066"
   width="208.57143"
   height="182.85715"
   x="80"
   y="77.14286"
   transform="translate(0,452.36218) rotate( 10 ) scale( 2, 0.4 )">
  <rect
   style="fill:#393939;fill-opacity:1;stroke:none"
   id="rect3066"
   width="208.57143"
   height="182.85715"
   x="80"
   y="77.14286"
   transform="translate(0,452.36218) rotate( 10 ) scale( 20, 40 )">


    </rect>

在 Firefox 中不会导致错误。 SVG - 形状元素规范here (the path-element for example) 并没有说它可以有任何形状元素或容器元素作为子元素。问题是,如果我尝试嵌套图形,正在运行的应用程序会崩溃,因此解析错误将使我免于此操作。

我正在使用 firefox 的 DOMParser 解析 xml 字符串,如下所示:

try{
            doc = parser.parseFromString( text, 
                "image/svg+xml" );

        } catch( parseError ){
            this.onDone.call( this, "parseError" );
        }

如果有任何建议如何解决这个问题,我很乐意听到。

问候菲利普

【问题讨论】:

  • 嗯,我只是试图用inkscape打开这个文件,即使没有出现错误......
  • 这样做是完全有效的 XML,所以这就是解析级别没有错误的原因。问题是 SVG 规范说你看不到结果。这是一个更高层次的概念。毕竟,您可以加载数据,然后使用 DOM 调用来重新设置矩形,以便您可以看到它。

标签: javascript svg xml-parsing


【解决方案1】:

为什么不使用 w3c 解析服务验证您的 SVG:http://validator.w3.org/

【讨论】:

  • 确保设置正确的 !DOCTYPE 属性或使用下拉菜单强制将其视为 SVG 1.1。否则,可能只检查文件的 XML 兼容性,并且如上面的 cmets 所述,XML 实际上是有效的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2021-11-24
相关资源
最近更新 更多