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="" 属性

posted @   遥望星空  阅读(1267)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示