c# – 如何防止空的xmlns属性从.NET的XmlDocument的输出?

当从.NET中的XmlDocument生成XML时,首次插入一个没有关联命名空间的元素时会出现一个空白的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>

所需输出:

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

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

我这样做的推理是看看我是否可以匹配特定协议的标准XML使用XmlDocument生成的XML。空白的xmlns属性可能不会破坏或混淆解析器,但它也不存在于我看到这个协议的任何用法。

感谢Jeremy Lew的回答和多一点,我想出了如何删除空白的xmlns属性:在创建任何你不想有一个前缀的子节点时,传入根节点的命名空间。使用在根位置没有前缀的命名空间意味着您需要在子元素上使用相同的命名空间,以使它们也不具有前缀。

固定码:

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);

感谢大家的所有答案,这导致我在正确的方向!

http://stackoverflow.com/questions/135000/how-to-prevent-blank-xmlns-attributes-in-output-from-nets-xmldocument

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 如何防止空的xmlns属性从.NET的XmlDocument的输出?