1
以下代码避免使用javascript
var ns1 = 'hello:world1',
doc = document.implementation.createDocument('nsdoc', 'doc', null),
outer = doc.createElement('outer'),
s = new XMLSerializer(),
elm;
outer.setAttribute('xmlns:ns1', ns1);
elm = doc.createElementNS(ns1, 'Inner');
outer.appendChild(elm);
console.log(s.serializeToString(outer));
复制XML序列化过程中的命名空间输出在铬和Firefox下面的XML文档。
<outer xmlns:ns1="hello:world1">
<Inner xmlns="hello:world1"/>
</outer>
尽管这在技术上仍然有效,有没有办法删除重复NS声明或是否有更好的API是用来设置命名空间用于儿童的父节点上?例如,将优选的文件如下所示:
<outer xmlns:ns1="hello:world1">
<ns1:Inner/>
</outer>
最坏的情况:s.serializeToString(外).split( '的xmlns = “你好:world1”')加入( '') – dandavis
@dandavis是不会工作的,节点将被丢失。 'ns1:'前缀,表示该节点的不同名称空间。 –
如果两者都使用ns1,则不需要将内部标记命名为空间。另外,你不能像这样设置一个命名空间的内部attrib,为此使用setAttributeNS和createElementNS。 – dandavis