XmlElement.Attributes.Remove * -Methoden funktionieren einwandfrei für beliebige Attribute, die dazu führen, dass die entfernten Attribute aus der XmlDocument.OuterXml-Eigenschaft entfernt werden. Das Xmlns-Attribut ist jedoch anders. Hier ein Beispiel:So entfernen Sie das Attribut xmlns mit der XML-API .NET
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"]);
Die resultierende Ausgabe ist
xmlns attr before removal=System.Xml.XmlAttribute
xmlns attr after removal=
<Element1 attr1="value1" xmlns="http://mynamespace.com/" />
Das Attribut scheint aus dem Attribute Sammlung entfernt werden, aber es wird nicht von XmlDocument.OuterXml entfernt. Ich denke, es ist wegen der besonderen Bedeutung dieses Attributs.
Die Frage ist, wie das Xmlns-Attribut mit .NET XML API zu entfernen. Offensichtlich kann ich nur das Attribut aus einer String-Darstellung von diesem entfernen, aber ich frage mich, ob es möglich ist, dasselbe mit der API zu tun.
@Edit: Ich spreche über .NET 2.0.
Ich lief gerade in dieses Problem. Guter Fund! –