在.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
将文档转换为字符串后再进行操作?
我这样做的原因是想看看是否可以使用 XmlDocument 生成的 XML 来匹配特定协议的标准 XML。空白的 xmlns
属性可能不会破坏或混淆解析器,但在我看过的这个协议的任何用法中都不存在。
doc.DocumentElement.NamespaceURI
),但是如果你在CreateAttribute()
中没有指定命名空间,你会得到xmlns:psomething
,即使它是相同的 URI。 - Jason Kleban