XmlElement.Attributes.Remove*方法适用于任意属性,导致从XmlDocument.OuterXml属性中删除已删除的属性.然而,Xmlns属性是不同的.这是一个例子:
XmlDocument doc = new XmlDocument(); doc.InnerXml = @""; 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=
该属性似乎从Attributes集合中删除,但不会从XmlDocument.OuterXml中删除.我想这是因为这个属性的特殊含义.
问题是如何使用.NET XML API删除xmlns属性.显然我可以从String的表示中删除该属性,但我想知道是否可以使用API执行相同的操作.
@Edit:我说的是.NET 2.0.