Entwickler-Ecke
IO, XML und Registry - XML Knoten bearbeiten
Ivy - Mo 25.10.10 11:08
Titel: XML Knoten bearbeiten
hallo,
ich möchte auch einen datensatz in meiner xml datei bearbeiten bzw aktualisieren. der fehler erscheint in der zeile ReplaceChild.
Zitat: |
"Der zu entfernende Knoten ist diesem Knoten nicht untergeordnet." |
Das ist mein quellcode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| XmlTextReader reader = new XmlTextReader(FILE_NAME); XmlDocument doc = new XmlDocument(); doc.Load(reader); reader.Close(); XmlNode alterKnoten; XmlElement root = doc.DocumentElement; alterKnoten = root.SelectSingleNode("/Setting/IECBus/IECGerät[@ID='" + alterName + "']"); XmlElement neuerKoten = doc.CreateElement("IECGerät"); neuerKoten.SetAttribute("ID", this.cmbID.Text); neuerKoten.SetAttribute("Name", txtName.Text + "Adresse", txtAdresse.Text); root.ReplaceChild(neuerKoten, alterKnoten); doc.Save(FILE_NAME); |
meine xml datei sieht so aus:
XML-Daten
1: 2: 3: 4: 5: 6:
| <Setting> <IECBus> <IECGerät ID="0" Name="Start" Adresse="111"> </IECGerät> </IECBus> </Setting> |
gruß
Kha - Mo 25.10.10 11:23
Da es kein direktes Kind der Wurzel ist, stimmt das doch auch so, oder? Du solltest wohl lieber an alterKnoten.ParentNode ansetzen. Die neuere, zu bevorzugende XElement-API kennt übrigens direkt eine Methode ReplaceWith.
PS: Warum nicht einfach die Attribute des alten Knoten überschreiben?
Ivy - Mo 25.10.10 13:35
Kha hat folgendes geschrieben : |
PS: Warum nicht einfach die Attribute des alten Knoten überschreiben? |
ja würde auch gehen xD
C#-Quelltext
1:
| neuerKoten.ParentNode.ReplaceWith("ID", this.cmbID.Text); |
funktioniert nicht...
Trashkid2000 - Mo 25.10.10 20:30
Hi,
Du kannst auch direkt die Attribute des Knotens einen anderen Wert verpassen.
Denke, so meint es auch
Kha
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| XmlNode node = doc.DocumentElement.SelectSingleNode("/Setting/IECBus/IECGerät[@ID='" + "0" + "']"); if (node != null) { if (node.Attributes["ID"] != null && node.Attributes["Name"] != null && node.Attributes["Adresse"] != null) { node.Attributes["ID"].Value = "1"; node.Attributes["Name"].Value = "xxx"; node.Attributes["Adresse"].Value = "yyyy"; } } |
//edit kurze Anmerkung gemacht
LG, Marko
Kha - Di 26.10.10 19:10
Ivy hat folgendes geschrieben : |
funktioniert nicht... |
Merke: XmlElement != XElement :P .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!