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="" 属性
分类:
技术类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现