【发布时间】:2010-09-09 17:42:50
【问题描述】:
XmlElement.Attributes.Remove* 方法适用于任意属性,从而导致从 XmlDocument.OuterXml 属性中删除已删除的属性。然而 Xmlns 属性是不同的。这是一个例子:
XmlDocument doc = new XmlDocument();
doc.InnerXml = @"<Element1 attr1=""value1"" xmlns=""http://mynamespace.com/"" attr2=""value2""/>";
doc.DocumentElement.Attributes.RemoveNamedItem("attr2");
Console.WriteLine("xmlns attr before removal={0}", doc.DocumentElement.Attributes["xmlns"]);
doc.DocumentElement.Attributes.RemoveNamedItem("xmlns");
Console.WriteLine("xmlns attr after removal={0}", doc.DocumentElement.Attributes["xmlns"]);
结果输出是
xmlns attr before removal=System.Xml.XmlAttribute
xmlns attr after removal=
<Element1 attr1="value1" xmlns="http://mynamespace.com/" />
该属性似乎已从 Attributes 集合中删除,但并未从 XmlDocument.OuterXml 中删除。 我猜是因为这个属性的特殊含义。
问题是如何使用 .NET XML API 删除 xmlns 属性。 显然我可以从这个字符串表示中删除属性,但我想知道是否可以使用 API 做同样的事情。
@Edit:我说的是 .NET 2.0。
【问题讨论】:
-
我刚遇到这个问题。很好的发现!
标签: .net xml api xml-namespaces