2012-02-14 58 views
1

我使用importNode()方法将几个元素添加到现有的SVG文档中;一切似乎都很好;可以使用getElementsByTagName [getElementById() is not working]获取新添加的元素,但问题是导入的元素没有被识别为SVGGElements,而是像[object Element]一样被提及。任何想法家伙?在IE9中,导入的节点似乎不被识别为SVG元素

+0

SVG命名空间中的节点? – 2012-02-14 21:14:23

+0

@ Robert,我在xml文件中新增了元素,如 2012-02-15 07:36:22

回答

2

xml文件中的元素需要定义它们所在的名称空间,否则它们会被解析为未知的xml元素。

即使xml文件的根是一个< svg>元素,情况也是如此。为了确保将元素解析为正确的svg元素,您应该添加xmlns="http://www.w3.org/2000/svg"并可能添加xmlns="http://www.w3.org/1999/xlink(如果您在文件的任何位置使用xlink属性)。

如果另一方面使用html5解析器解析元素,则约束类似但略有不同,因为xmlns属性无法在html中识别(仅在xhtml中)。在这种情况下,至少需要使用svg>元素根目录作为svg解析,并且需要确保将标记检测为html5(避免使用任何特定于浏览器的传统回退模式) 。所以如果你使用html5解析器,你不可能有一个< g>元素作为根。