Knoten aus einem XmlDocument entfernen
Sollte der folgende code finden Sie die entsprechenden Projekt-tag und entfernen Sie es aus dem XmlDocument, jedoch wenn ich es Teste, es sagt:
Die Knoten entfernt werden, ist kein untergeordnetes Element dieses Knotens.
Kennt jemand den richtigen Weg, dies zu tun?
public void DeleteProject (string projectName)
{
string ccConfigPath = ConfigurationManager.AppSettings["ConfigPath"];
XmlDocument configDoc = new XmlDocument();
configDoc.Load(ccConfigPath);
XmlNodeList projectNodes = configDoc.GetElementsByTagName("project");
for (int i = 0; i < projectNodes.Count; i++)
{
if (projectNodes[i].Attributes["name"] != null)
{
if (projectName == projectNodes[i].Attributes["name"].InnerText)
{
configDoc.RemoveChild(projectNodes[i]);
configDoc.Save(ccConfigPath);
}
}
}
}
UPDATE
Behoben. Ich habe zwei Dinge:
XmlNode project = configDoc.SelectSingleNode("//project[@name='" + projectName + "']");
Ersetzt die For-Schleife mit einer XPath-Abfrage, die nicht für die Festsetzung es, nur weil es war ein besserer Ansatz.
Die eigentliche Korrektur war:
project.ParentNode.RemoveChild(project);
Dank Pat und Chuck für diesen Vorschlag.
InformationsquelleAutor der Frage FlySwat | 2008-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt
versuchen
InformationsquelleAutor der Antwort Pat
versuchen
InformationsquelleAutor der Antwort Jason
Sieht aus wie Sie benötigen, wählen Sie den übergeordneten Knoten projectNodes[ich] vor dem Aufruf von RemoveChild.
InformationsquelleAutor der Antwort Chuck
Ist es möglich, dass das Projekt Knoten sind keine Kind-Knoten, aber Enkel oder niedriger? GetElementsByTagName geben Sie die Elemente von überall aus in das untergeordnete element, Baum, IIRC.
InformationsquelleAutor der Antwort Greg Hurlman
Wenn Sie ausreichend verärgert, es zu schreiben, der lange Weg (für mich war ziemlich bald) können Sie eine helper-extension-Methode weiter unten. Yay neue Technologie!
InformationsquelleAutor der Antwort Eugene Ryabtsev
Wäre es praktisch, um ein Beispiel der XML-Datei, die Sie gerade Bearbeiten, aber meine Vermutung wäre, dass Sie so etwas wie dieses
Die Fehlermeldung zu sein scheint, weil Sie versuchen, zu entfernen
<project>
von den Großeltern eher als der direkten Muttergesellschaft der Projekt-KnotenInformationsquelleAutor der Antwort David Hayes