Javascript 将xml追加到div时在IE中添加额外命名空间
我尝试了另一种方法:Javascript 将xml追加到div时在IE中添加额外命名空间,javascript,jquery,html,svg,Javascript,Jquery,Html,Svg,我尝试了另一种方法: **xmlns:NS1=\"\" NS1:xmlns:xml=\"http://www.w3.org/XML/1998/namespace\"** 这会去掉额外的名称空间,但当我尝试将其添加到另一个svg对象时,这次在将子对象添加到父对象时会得到相同的额外名称空间 这导致我的svg无法打开 我在谷歌上搜索了很多。跟帖:, 我尝试了:new DOMParser().parseFromString(内容为“text/xml”) 这对我不起作用。我想我做错了什么。有人能指出
**xmlns:NS1=\"\" NS1:xmlns:xml=\"http://www.w3.org/XML/1998/namespace\"**
这会去掉额外的名称空间,但当我尝试将其添加到另一个svg对象时,这次在将子对象添加到父对象时会得到相同的额外名称空间
这导致我的svg无法打开
我在谷歌上搜索了很多。跟帖:,
我尝试了:new DOMParser().parseFromString(内容为“text/xml”)
这对我不起作用。我想我做错了什么。有人能指出哪里出了问题吗
@dmccabe
@托马斯:好的。提出了以下解决方案:
var wrapper = document.**createElementNS**('http://www.w3.org/2000/svg', 'g');
wrapper.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');
wrapper.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');
parser.parseFromString是将字符串转换为svg dom结构所必需的。在这一切之后,svg仍然没有显示出来。当我从svg元素中删除以下三个属性时,svg显示正确!!:
requiredFeatures、requiredExtensions和systemLanguage//删除这些属性。SVG组元素必须位于
元素内。不能将它们直接插入到
中。
var wrapper = document.**createElementNS**('http://www.w3.org/2000/svg', 'g');
wrapper.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');
wrapper.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');
var insertSvgTag =
'<g transform="scale(0.34) translate(75,60)">' + svgElem.outerHTML + '</g>';
var wrapper = document.createElementNS('http://www.w3.org/2000/svg', 'g');
wrapper.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');
wrapper.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');
wrapper.setAttribute("transform", "scale(0.34) translate(75,60)");
var xmlString = insertSvgTag
, parser = new DOMParser()
, doc = parser.parseFromString(xmlString, "image/svg+xml");
doc.firstChild.firstChild.removeAttribute("requiredFeatures");
doc.firstChild.firstChild.removeAttribute("requiredExtensions");
doc.firstChild.firstChild.removeAttribute("systemLanguage");
wrapper.appendChild(doc.firstChild.firstChild);
xmlns:NS1=\"\" NS1:xmlns:xml=\"http://www.w3.org/XML/1998/namespace\"