Hallo allemaal,
Ik heb nu toch iets vreemds waar ik echt helemaal niets van begrijp! Het gaat over de XmlNode.ReplaceChild. In de onderstaande code krijg ik een foutmelding bij genoemde functie (regel 4), te weten een ArgumentException (Het knooppunt dat moet worden verwijderd, is geen onderliggend knooppunt van dit knooppunt.).
Zoals je ziet heb ik daaronder (regel 5/6) twee regels toegevoegd en die gecomment, en het vreemde is dat die dus wél werken!! Je zou verwachten dat ReplaceChild niets anders zou doen dan verwijderen en toevoegen op de oorspronkelijke positie (in feite natuurlijk niet bijzonder anders dan op een andere positie). Daarom kan ik hier met mijn verstand niet bij, en op internet is er ook niets over te vinden (de foutmelding is natuurlijk ook erg onduidelijk, want het verwijderen lukt wél!).
Overigens gaat het in beide gevallen om een XmlElement, dus niet dat ik een XmlAttribute wil vervangen door een XmlElement of iets in die richting. Sterker nog, als ik ze expliciet als XmlElement benoem in plaats van XmlNode levert dat ook geen succes op.
Wie weet wat hier mis is? Ligt dit aan mij of zit hier een bug in c#?
Ik heb nu toch iets vreemds waar ik echt helemaal niets van begrijp! Het gaat over de XmlNode.ReplaceChild. In de onderstaande code krijg ik een foutmelding bij genoemde functie (regel 4), te weten een ArgumentException (Het knooppunt dat moet worden verwijderd, is geen onderliggend knooppunt van dit knooppunt.).
C#:
1
2
3
4
5
6
| // Oude node met rollen vervangen door nieuwe node XmlNode organizationNode = node.SelectSingleNode("Organization"); XmlNode sourceRolesNode = organizationNode.SelectSingleNode("Roles"); organizationNode.ReplaceChild(sourceRolesNode, targetRolesNode); //organizationNode.RemoveChild(sourceRolesNode); //organizationNode.AppendChild(targetRolesNode); |
Zoals je ziet heb ik daaronder (regel 5/6) twee regels toegevoegd en die gecomment, en het vreemde is dat die dus wél werken!! Je zou verwachten dat ReplaceChild niets anders zou doen dan verwijderen en toevoegen op de oorspronkelijke positie (in feite natuurlijk niet bijzonder anders dan op een andere positie). Daarom kan ik hier met mijn verstand niet bij, en op internet is er ook niets over te vinden (de foutmelding is natuurlijk ook erg onduidelijk, want het verwijderen lukt wél!).
Overigens gaat het in beide gevallen om een XmlElement, dus niet dat ik een XmlAttribute wil vervangen door een XmlElement of iets in die richting. Sterker nog, als ik ze expliciet als XmlElement benoem in plaats van XmlNode levert dat ook geen succes op.
Wie weet wat hier mis is? Ligt dit aan mij of zit hier een bug in c#?