2012-03-01 63 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