5

我需要使用 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);. 但我想要一个浏览器中立的解决方案。

但我宁愿不创建那个虚拟属性。当然,必须可以显式创建命名空间节点。我错过了什么?

4

0 回答 0