【发布时间】: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