当我使用 XMLDocument写GOOGLE的SITEMAP时,遇到了此类问题,在网上搜索后未找到答案,经过思索
成功得出如下方案:
当我们在APPENDCHILD的时候,如果PARENTNODE是带有XMLNS属性的,而你新加的节点,在创建时不指定XMLNS或指定为空时,子节点将出现XMLNS=“”属性,终无法去掉
问题原因:当父节点具有XMLNS属性时,子节点必须指定XMLNS属性,但是当子节点的XMLNS属性与父节点命名空间相同时,子节点不显示XMLNS属性,上面问题的根本所在就是我们理解上的错误,认为我没有为子节点指定命名空间,就不应该出现此属性,恰恰相反,当我们为其指定与父节点相同的命名空间时,此属性才不会出现
错误代码:
XmlNode urlNode = addNode(xmlDoc,rootNode,"url",""); 第三个参数未指定
结果:<url xmlns="">...</url>
正确代码:
XmlNode urlNode = addNode(xmlDoc,rootNode,"url",xmlDoc.DocumentElement.NamespaceURI); 指定第三个参数
结果::<url>...</url>
注意:在url节点下一级,依然要继续指定命名空间,不然在其下一级将出现 xmlns="" 属性