在.NET中从XmlDocument生成XML时,第一次插入关联命名空间的元素without时会出现空白的xmlns属性;如何防止这种情况发生?

示例:

XmlDocument xml = new XmlDocument();
xml.AppendChild(xml.CreateElement("root",
    "whatever:name-space-1.0"));
xml.DocumentElement.AppendChild(xml.CreateElement("loner"));
Console.WriteLine(xml.OuterXml);

输出:

<root xmlns="whatever:name-space-1.0"><loner xmlns="" /></root>

Desired 输出:

<root xmlns="whatever:name-space-1.0"><loner /></root>

是否有一种解决方案适用于XmlDocument代码,而不是将文档转换为OuterXml的字符串?

我这样做的理由是看我是否可以使用XmlDocument生成的XML匹配特定协议的标准XML.空白xmlns属性may不中断或混淆解析器,但它也不存在于我见过的任何协议中.

推荐答案

多亏了Jeremy Lew的回答和更多的try ,我想出了如何删除空白的xmlns个属性:在创建您希望not具有前缀的任何子 node 时传入根 node 的名称空间.在根位置使用没有前缀的名称空间意味着您需要对子元素使用相同的名称空间,以便also没有前缀.

固定代码:

XmlDocument xml = new XmlDocument();
xml.AppendChild(xml.CreateElement("root", "whatever:name-space-1.0"));
xml.DocumentElement.AppendChild(xml.CreateElement("loner", "whatever:name-space-1.0")); 
Console.WriteLine(xml.OuterXml);

感谢大家的回答,让我找到了正确的方向!

.net相关问答推荐

节省用户在整个应用程序中使用的Flutter

跨请求共享数据

如何在 C# 中自动删除临时文件?

"投掷;" 是什么意思?靠自己做什么?

如何在 ASP.NET Core MVC 中读取操作方法的属性?

如何在 MSBuild 脚本中获取当前目录?

如何解决请确保文件可访问并且它是有效的程序集或 COM 组件?

extern 在 C# 中是如何工作的?

如何从 appsettings.json 中获取价值

.net:System.Web.Mail 与 System.Net.Mail

读取方法的属性值

如何更改 double.ToString() 中小数点的符号?

如何在 C# 中仅设置 DateTime 变量的时间部分

MemoryStream.Close() 或 MemoryStream.Dispose()

Iif 在 C# 中等效

有没有像样的 C# 分析器?

如何在 WPF 中的 Xaml 文件中添加注释?

立即检测客户端与服务器套接字的断开连接

使用 DateTime.ToString() 时获取日期后缀

C# ListView 列宽自动