2011-12-29 15 views
5

jak usunąć atrybut z obiektu System.Xml.XmlNode w języku C#. Kodeks, którego próbowałem, nie działał. Zgłasza wyjątek "Węzeł do usunięcia nie jest prawidłowym węzłem podrzędnym"Usuń atrybut z XmlNode

foreach (XmlNode distribution 
     in responseXml.SelectNodes("/Distributions/Distribution/DistributionID")) 
{ 
    XmlAttribute attribute = null; 
    foreach (XmlAttribute attri in distribution.Attributes) 
    { 
    if (attri.Name == "GrossRevenue") 
     attribute = attri; 
    } 
    if (attribute != null) 
    distribution.ParentNode.RemoveChild(attribute); 
} 
+2

Powinieneś dołączyć dane xml, aby ktoś, kto chciałby wypróbować Twój kod, mógł to zrobić. –

Odpowiedz

8

Atrybuty Xml nie są XmlNodes. XmlNode.ChildNodes jest typu XmlNodeList, natomiast XmlNode.Attributes jest typu XmlAttributesCollection. Aby usunąć atrybut, należy użyć metody XmlAttributesCollection.Remove lub .RemoveAt. W twoim kodzie:

distribution.ParentNode.Attributes.Remove(attribute);