C#中用XMLDocument写文件时,去掉XMLNS属性

当我使用 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="" 属性

你可能感兴趣的:(document)