Hallo zusammen,
ich habe mir hier schon einiges durch gelesen und auch schon einige Anregungen gefunden, doch leider passt nichts so wirklich zu meinem Problem, oder ich bin gerade einfach nur zu doof dafür.
Folgendes:
Ich habe eine XML Datei, die in etwa so aussieht:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| <?xml version="1.0" encoding="UTF-8"?> <Database Version="702"> <Song FilePath="C:\Users\xxx\xxx\xxx\ftw.mp3" FileSize="500144"> <Display Genre="Other" Color="5678931" Cover="162" Tag="1" /> <Infos FirstSeen="1012111957" /> </Song> <Song FilePath="C:\Das ist - ein Lied.mp3" FileSize="31729238" Flag="64"> <Display Color="13747094" Cover="2210" Tag="1" /> <Infos FirstSeen="1012312017" /> </Song> </Database> |
Natürlich ist sie viel größer und länger, aber der Aufbau stimmt soweit.
Zwei Fragen nun:
1. Wie bekomme ich es hin, dass ich über die Knoten iterieren kann und dabei Werte abfrage?
2. Wie kann ich dann einen solchen Wert, nehmen wir mal "FilePath" ändern?
Ich versuche mich gerade an dem XDocument aber das will noch nicht so ganz.
C#-Quelltext
1: 2: 3: 4: 5:
| XDocument xmlDoc; XmlTextReader reader = new XmlTextReader(@txtFile.Text); xmlDoc = XDocument.Load(reader);
XElement root = xmlDoc.Element("Database"); |
Mal gekürzt zusammen geschrieben.
WEnn ich das jetzt richtig verstanden habe, dann bekomme ich in root, das komplette XML-Dokument.
Wie nun jeden Knoten "Song" auf einen bestimmten Wert abfragen?
Zweites was ich versucht habe war per XmlDocument.
Muss das jetzt mal kurz aus dem Kopf schreiben hab den Code nicht mehr vor mir:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| XmlElement root = xmlDoc.Children("Database"); foreach (XmlNode @element in root) { if (@element.Name == "Song") { if (!File.Exists(@element.Attributes["FilePath"].InnerText)) { songs.Add(@element.Attributes["FilePath"].InnerText); } } } |
Das ging soweit ganz gut, aber dann konnte ich den Wert von Attributes["FilePath"] irgendwie nicht ändern
Kann mir mal bitte einer auf die Sprünge helfen und mir sagen wie ich die entsprechenden Nodes durchlaufen und ggf. Werte ändern kann?
Ach ja, und das ganze dann natülich auch in die XML-Datei schreibe...
Ich hab genug für heute,
lg PachN
Moderiert von
Christian S.: Code- durch XML-Tags ersetzt
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt