對於任意屬性,XmlElement.Attributes.Remove *方法正常工作,從而導致從XmlDocument.OuterXml屬性中刪除已刪除的屬性。然而Xmlns屬性是不同的。這裏有一個例子:如何使用.NET XML API刪除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/" />
屬性似乎從屬性集合中刪除,但它不會從XmlDocument.OuterXml刪除。 我想這是因爲這個屬性的特殊含義。
問題是如何使用.NET XML API刪除xmlns屬性。 很明顯,我可以從字符串表示形式中刪除屬性,但我想知道是否可以使用API來做同樣的事情。
@編輯:我在談論.NET 2.0。
我剛剛遇到了這個問題。好找! – 2009-10-23 21:41:21