我需要使用JavaScript创建一些XML。其中一个更困难的事情是我需要使用XML限定名称填充节点的文本内容。也就是说,本地名称和前缀,例如myns:myelement。
难点在于XML文档不包含前缀应绑定到的命名空间的任何其他元素或属性。所以我需要在封闭元素中添加一个名称空间节点(xmlns)来定义前缀。例如: -
<myElement xmlns:myprefix="http://something">myprefix:foo</myElement>
我看不到在JavaScript中添加xmlns命名空间节点的好方法。目前,我有以下可怕的黑客: -
// Hacky way to get a namespace prefix definition. TODO: can we do something nicer?
var prefix = "ixe";
requestElement.setAttributeNS(inputTypes[0].namespaceURL, prefix + ":" + "def", "");
inputElement.textContent = prefix + ":" + inputTypes[0].localName;
我正在使用所需的命名空间和任意前缀创建一个不需要的属性。这会导致生成的文档具有xmlns命名空间节点,以定义命名空间的前缀。
在最新的FireFox和Chrome上,但在IE上不,可以inputElement.setAttribute("xmlns:" + PREFIX, inputType.namespaceUri);
。但我想要一个与浏览器无关的解决方案。
但我宁愿不创建那个虚拟属性。当然,必须可以显式创建命名空间节点。我错过了什么?