2012-03-01 64 views
0

我即将导入一个SVG到应用程序(JavaScript),实际上工作很好,除了他们没有分析错误抛出解析器(DOMParser)如果形状是nestet。例如,此代码:svg形状嵌套在形状 - 没有解析错误

<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)的规范并没有说它可以像儿童一样具有任何形状或容器元素。问题是,如果我尝试嵌套图形,那么应用程序正在为崩溃工作,所以解析错误会让我免于此。

我解析XML字符串与Firefox的的DOMParser这样的:

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

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

如果有任何建议如何解决这个我会很高兴听到这个消息。

问候菲利普

+0

听起来像一个Firefox的错误...... – feeela 2012-03-01 15:31:08

+0

嗯,我只是试图打开使用Inkscape这个文件,甚至也不会发生错误.. 。 – philipp 2012-03-01 15:33:36

+2

这是完全有效的XML,所以这就是为什么在解析级别没有错误。问题在于SVG规范说你看不到结果。尽管这是一个更高层次的概念。毕竟你可以加载数据,然后使用DOM调用来重新引导rect,这样你就可以看到它。 – 2012-03-01 16:18:21

回答

0

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

+0

请务必设置正确的!DOCTYPE属性或使用下拉菜单强制它将其视为SVG 1.1。否则,可能仅检查文件的XML兼容性,并且如上述注释中所述,XML实际上是有效的。 – trlkly 2014-05-24 15:04:41