SeToY Geschrieben 20. Februar 2009 Teilen Geschrieben 20. Februar 2009 Hallo liebe Fachinformatiker/innen erstmal ein liebes "Hallo" an alle. Nun meine Frage Ich soll ein Programm schreiben, was ein bestimmtes verzeichnis (samt unterverzeichnissen) durchsucht, und in einer liste die .xml dateien ausgibt. Nun habe ich schon angefangen, komme aber mit der funktion nicht weiter, wodran ich ja dann die durchsuchung der anderen verzeichnisse weitergeben muss. hier mein code: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { DirectoryInfo dir = new DirectoryInfo(@"C:\Temp"); string[] directories = Directory.GetDirectories(@"C:\Temp"); FileInfo[] files = dir.GetFiles("*.xml"); string[]lines = new string[files.Length]; int i = 0; foreach (FileInfo file in files) { lines[i] = file.Name; i++; } textBox1.Lines = lines; } [B] private DirectoryInfo fkt(DirectoryInfo[] fkt2) { return null; }[/B] private void button2_Click(object sender, EventArgs e) { textBox1.ResetText(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Lines) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } } } kann mir da wer helfen? Mfg SeToY PS: return null; hab ich drinstehen, damit mir der compiler keinen fehler raushaut :e@sy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 20. Februar 2009 Teilen Geschrieben 20. Februar 2009 Stichwort ist hier rekursives Funktion. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 20. Februar 2009 Autor Teilen Geschrieben 20. Februar 2009 Damit habe ich mich auch schon befasst, aber ich muss dazu sagen: Ich bin blutiger anfänger :old BTW: Danke für's verschieben... Habe mir scho ngedacht, dass ich da irgendwas falsch gemacht habe :upps Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 20. Februar 2009 Teilen Geschrieben 20. Februar 2009 so zum Beispiel: List<string> SearchFiles(string path) { List<string> files = new List<string>(); DirectoryInfo dir = new DirectoryInfo(path); foreach (FileInfo file in dir.GetFiles("*.xml")) { files.Add(file.Name); } foreach (DirectoryInfo di in dir.GetDirectories()) { files.AddRange(SearchFiles(di.FullName)); } return files; }[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 20. Februar 2009 Teilen Geschrieben 20. Februar 2009 private void GetFiles(string folderPath, List<string> fileList ) { if (!Directory.Exists(folderPath)) return; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.xml"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); } Guybrushs Lösung geht natürlich auch. :beagolisc Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 20. Februar 2009 Autor Teilen Geschrieben 20. Februar 2009 (bearbeitet) Erstmal superlieben dank für eure Mühen aber wo sollte ich dieses codebeispiel jetzt einbauen? ich bin ja dabei die rekursive funktion "fkt" zu erstellen. im mom noch mit "return null;", damit ich beim compilen keinen fehler bekomme. müsste ich den code dann ziwschen die {} stellen? private DirectoryInfo fkt(DirectoryInfo[] fkt2) { return null; } also da, wo jetzt "return null;" steht, oder was müsste ich machen? danke SeToY Edit: Habe gerade mal den code umgebaut 'n bissle und nun das raus.. aber er gibt mir immer noch net die dateien in den unterverzeichnissen mit in die textbox1. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { DirectoryInfo dir = new DirectoryInfo(@"C:\Temp"); string[] directories = Directory.GetDirectories(@"C:\Temp"); FileInfo[] files = dir.GetFiles("*.xml"); string[]lines = new string[files.Length]; int i = 0; foreach (FileInfo file in files) { lines[i] = file.Name; i++; } textBox1.Lines = lines; } private void GetFiles(string folderPath, List<string> fileList) { if (!Directory.Exists(folderPath)) return; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.xml"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); } private void button2_Click(object sender, EventArgs e) { textBox1.ResetText(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Lines) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } } } Bearbeitet 20. Februar 2009 von SeToY Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 20. Februar 2009 Autor Teilen Geschrieben 20. Februar 2009 Sry 4 doppelpost.. bin nun aber weiter :bimei ok, also ich hab nun die textbox in ne listbox geändert.. meine listbox heißt aber (damit ich nicht alles ummodeln muss) "textbox1". wie schaffe ich jetzt, dass ich die ausgewählte datei mit einem klick auf "öffnen" (button 4) öffnen kann? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { textBox1.Items.Clear(); List<string> files = this.GetFiles(@"C:\Temp", new List<string>()); string[] lines = new string[files.Count]; int i = 0; foreach (string file in files) { textBox1.Items.Add(file); i++; } } private List<string> GetFiles(string folderPath, List<string> fileList) { if (!Directory.Exists(folderPath)) return fileList; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.xml"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); return fileList; } private void button2_Click(object sender, EventArgs e) { textBox1.Items.Clear(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Items) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } private void button4_Click(object sender, EventArgs e) { // HIER MEIN ÖFFNEN-KNOPF } } } [/php] danke und mfg SeToY Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 23. Februar 2009 Teilen Geschrieben 23. Februar 2009 wie schaffe ich jetzt, dass ich die ausgewählte datei mit einem klick auf "öffnen" (button 4) öffnen kann? Definiere öffnen. Externes Programm? Dieses Programm? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
U-- °LoneWolf° Geschrieben 23. Februar 2009 Teilen Geschrieben 23. Februar 2009 also ich vermute mal dür möchtest eine datei in der liste mit einem anderen programm öffnen. schau dir mal Process.Start an damit kannst du z.b. die datei über das std. programm öffnen. das ist dann vergleichbar mit einem doppelklick auf die datei(ganz grob). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 24. Februar 2009 Autor Teilen Geschrieben 24. Februar 2009 (bearbeitet) Also, habe nochmal drübergeschaut ^^ Ich soll die XML-Datei durchsuchen, einen wert finden, diesen ändern, und die datei wieder zurückspeichern. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { textBox1.Items.Clear(); List<string> files = this.GetFiles(@"C:\Temp", new List<string>()); string[] lines = new string[files.Count]; int i = 0; foreach (string file in files) { textBox1.Items.Add(file); i++; } } private List<string> GetFiles(string folderPath, List<string> fileList) { if (!Directory.Exists(folderPath)) return fileList; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.xml"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); return fileList; } private void button2_Click(object sender, EventArgs e) { textBox1.Items.Clear(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Items) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } private void button4_Click(object sender, EventArgs e) { StreamReader reader = new StreamReader(textBox1.SelectedItem.ToString()); XmlDocument doc = new XmlDocument(); } } } [/php] Bearbeitet 24. Februar 2009 von SeToY Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 24. Februar 2009 Teilen Geschrieben 24. Februar 2009 Schau dir mal die XmlDocument-Klasse an. [Edit] Ok, warst schneller. http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.load.aspx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 24. Februar 2009 Autor Teilen Geschrieben 24. Februar 2009 Ooooookay using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { textBox1.Items.Clear(); List<string> files = this.GetFiles(@"C:\Temp", new List<string>()); string[] lines = new string[files.Count]; int i = 0; foreach (string file in files) { textBox1.Items.Add(file); i++; } } private List<string> GetFiles(string folderPath, List<string> fileList) { if (!Directory.Exists(folderPath)) return fileList; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.*"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); return fileList; } private void button2_Click(object sender, EventArgs e) { textBox1.Items.Clear(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Items) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } private void button4_Click(object sender, EventArgs e) { StreamReader reader = new StreamReader(textBox1.SelectedItem.ToString()); XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); XmlReader read = new XmlReader(); } } } [/php] das hab ich nun ^^ in der xml steht: [code] <add name="Debug" /> [/code] , welches ich durch [code] <add name="xxx" /> [/code] ersetzen soll. danach wieder zurückspeichern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 24. Februar 2009 Teilen Geschrieben 24. Februar 2009 hmm, ungetestet: string file = textBox1.SelectedItem.ToString(); XmlDocument doc = new XmlDocument(file); doc["add"].Attributes["name"].Value = "xxx"; doc.Save(file); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 24. Februar 2009 Autor Teilen Geschrieben 24. Februar 2009 funktioniert nicht. das problem ist ja, dass ich vorher die dateien auslese, welche alle in dem verzeichnis vorhanden sind. also kann ich keine feste datei-url vergeben. so bin ich weitergegangen: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { textBox1.Items.Clear(); List<string> files = this.GetFiles(@"C:\Temp", new List<string>()); string[] lines = new string[files.Count]; int i = 0; foreach (string file in files) { textBox1.Items.Add(file); i++; } } private List<string> GetFiles(string folderPath, List<string> fileList) { if (!Directory.Exists(folderPath)) return fileList; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.*"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); return fileList; } private void button2_Click(object sender, EventArgs e) { textBox1.Items.Clear(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Items) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } private void button4_Click(object sender, EventArgs e) { StreamReader reader = new StreamReader(textBox1.SelectedItem.ToString()); XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); XmlNodeList nodelist = doc.GetElementsByTagName("categoryFilters"); } } } [/php]. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 24. Februar 2009 Teilen Geschrieben 24. Februar 2009 funktioniert nicht. das problem ist ja, dass ich vorher die dateien auslese, welche alle in dem verzeichnis vorhanden sind. also kann ich keine feste datei-url vergeben. Die URL (der Pfad zur Datei) steht doch in textBox1.SelectedItem?! :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 24. Februar 2009 Autor Teilen Geschrieben 24. Februar 2009 jo, recht haste.. xD ich setz deinen code nochmal eben ein. edit: Debugger: The Name 'file' does not exist in the current context. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 24. Februar 2009 Teilen Geschrieben 24. Februar 2009 Die Zeile "string file = textBox1.SelectedItem.ToString();" vergessen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 24. Februar 2009 Autor Teilen Geschrieben 24. Februar 2009 ja ne eigentlich nicht.. ^^ hab jetzt auch weitergemacht: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { textBox1.Items.Clear(); List<string> files = this.GetFiles(@"C:\Temp", new List<string>()); string[] lines = new string[files.Count]; int i = 0; foreach (string file in files) { textBox1.Items.Add(file); i++; } } private List<string> GetFiles(string folderPath, List<string> fileList) { if (!Directory.Exists(folderPath)) return fileList; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.config"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); return fileList; } private void button2_Click(object sender, EventArgs e) { textBox1.Items.Clear(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Items) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } private void button4_Click(object sender, EventArgs e) { StreamReader reader = new StreamReader(textBox1.SelectedItem.ToString()); string file = textBox1.SelectedItem.ToString(); XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); reader.Close(); XmlNodeList nodelist = doc.GetElementsByTagName("categoryFilters"); string nodeXml = nodelist[0].InnerXml; XmlNodeList childs = nodelist[0].ChildNodes; childs[0].Attributes["name"].Value = "xxx"; StreamWriter writer = new StreamWriter(file+".new.config"); string[] xml = doc.InnerXml.Split('>'); writer.WriteLine(xml[0]+">"); writer.Flush(); writer.Close(); } } } [/php] jetzt gibt er mir aber nur die erste zeile aus meinem xml-document aus :S Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 24. Februar 2009 Teilen Geschrieben 24. Februar 2009 ja ne eigentlich nicht.. ^^ hab jetzt auch weitergemacht: //... private void button4_Click(object sender, EventArgs e) { StreamReader reader = new StreamReader(textBox1.SelectedItem.ToString()); string file = textBox1.SelectedItem.ToString(); XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); reader.Close(); XmlNodeList nodelist = doc.GetElementsByTagName("categoryFilters"); string nodeXml = nodelist[0].InnerXml; XmlNodeList childs = nodelist[0].ChildNodes; childs[0].Attributes["name"].Value = "xxx"; StreamWriter writer = new StreamWriter(file+".new.config"); string[] xml = doc.InnerXml.Split('>'); writer.WriteLine(xml[[B]0[/B]]+">"); writer.Flush(); writer.Close(); } } } [/php] jetzt gibt er mir aber nur die erste zeile aus meinem xml-document aus :S Ist auch klar wenn du splittest. "<node1 value="1"> <node2 value="2">" Wird dann zu {[b] "<node1 value=\"1\""[/b], "<node2 value=\"2\""} Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 24. Februar 2009 Autor Teilen Geschrieben 24. Februar 2009 und was kann ich dagegen machen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 24. Februar 2009 Autor Teilen Geschrieben 24. Februar 2009 jetz muss ich schon wieder double-posten, weil ich meinen post net editieren kann :upps naja.. bin soweit, dass er das dingen jetzt ändert. aber nur, wenn es sich an der angegebenen stelle befindet. wie schaff ich es jetzt, dass er das "debug" ändert, auch wenn es nich da is, wo es eigentlich ist? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { textBox1.Items.Clear(); List<string> files = this.GetFiles(@"C:\Temp", new List<string>()); string[] lines = new string[files.Count]; int i = 0; foreach (string file in files) { textBox1.Items.Add(file); i++; } } private List<string> GetFiles(string folderPath, List<string> fileList) { if (!Directory.Exists(folderPath)) return fileList; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.config"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); return fileList; } private void button2_Click(object sender, EventArgs e) { textBox1.Items.Clear(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Items) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } private void button4_Click(object sender, EventArgs e) { StreamReader reader = new StreamReader(textBox1.SelectedItem.ToString()); string file = textBox1.SelectedItem.ToString(); XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); reader.Close(); XmlNodeList nodelist = doc.GetElementsByTagName("categoryFilters"); string nodeXml = nodelist[0].InnerXml; XmlNodeList childs = nodelist[0].ChildNodes; childs[0].Attributes["name"].Value = "xxx"; StreamWriter writer = new StreamWriter(file+".new.config"); string[] xml = doc.InnerXml.Split('>'); //writer.WriteLine(xml[0] + ">"); foreach (string sfda in xml) { writer.WriteLine(sfda + ">"); } writer.Flush(); writer.Close(); } } } [/php] danke schonmal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
U-- °LoneWolf° Geschrieben 25. Februar 2009 Teilen Geschrieben 25. Februar 2009 (bearbeitet) He also erst mal eine frage welche .Net version setzt du ein? weil das StreamReader reader = new StreamReader(textBox1.SelectedItem.ToString()); string file = textBox1.SelectedItem.ToString(); XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); [/PHP] geht auch einfacher ist aber von der .Net version abhängig [PHP] doc.Load(textBox1.SelectedItem.ToString()); achja und wenn du nur einen bestimmten text ersetzen sollst warum liest du dann das ganze xml ein? ... string temp = reader.ReadToEnd(); temp= temp.Replace("alterwert", "neuerWert"); ... [/PHP] geht eventuel einfacher... alternativ kannst du auch mit [PHP] doc.SelectNodes("//add[@name='debug']") eine Nodelist erzeugen die du dann in einer schleife abarbeiten kannst. ist evenetuel sogar der einfachste weg. grüße wolf Bearbeitet 25. Februar 2009 von U[[ °LoneWolf° ergänzung Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SeToY Geschrieben 26. Februar 2009 Autor Teilen Geschrieben 26. Februar 2009 benutze .net 2005. Visual studio. jetzt hab ich den code so gut wie fertig und hab ne neue aufgabe beim klick auf den knopf "ändern" soll die komplette zeile mit dem kompletten tag gelöscht werden. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Text = "Dateien in C:\\Temp"; this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { textBox1.Items.Clear(); List<string> files = this.GetFiles(@"C:\Temp", new List<string>()); string[] lines = new string[files.Count]; int i = 0; foreach (string file in files) { textBox1.Items.Add(file); i++; } } private List<string> GetFiles(string folderPath, List<string> fileList) { if (!Directory.Exists(folderPath)) return fileList; string[] dirs = Directory.GetDirectories(folderPath); foreach (string subDir in dirs) GetFiles(subDir, fileList); string[] files = Directory.GetFiles(folderPath, "*.config"); foreach (string file in files) if (!fileList.Contains(file)) fileList.Add(file); return fileList; } private void button2_Click(object sender, EventArgs e) { textBox1.Items.Clear(); } private void button3_Click(object sender, EventArgs e) { FileInfo file = new FileInfo(@"C:\Temp\export.txt"); StreamWriter writer = new StreamWriter(file.FullName); foreach (string line in textBox1.Items) { writer.WriteLine(line); } writer.Flush(); writer.Close(); } private void button4_Click(object sender, EventArgs e) { StreamReader reader = new StreamReader(textBox1.SelectedItem.ToString()); string file = textBox1.SelectedItem.ToString(); XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); reader.Close(); XmlNodeList nodelist = doc.SelectNodes("/configuration/loggingConfiguration/logFilters/add/categoryFilters/add"); foreach (XmlNode node in nodelist) { if (node.Attributes["name"].Value.ToLower() == "debug") { node.Attributes["name"].Value = "xxx"; } } StreamWriter writer = new StreamWriter(file+".new.config"); string[] xml = doc.InnerXml.Split('>'); //writer.WriteLine(xml[0] + ">"); foreach (string sfda in xml) { writer.WriteLine(sfda + ">"); } writer.Flush(); writer.Close(); } } } [/php] hier die zeile: [php] <categoryFilters> <add name="Info" /> <add name="Warning" /> <add name="Error" /> <add name="Debug" /> <add name="Fatal" /> </categoryFilters> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
U-- °LoneWolf° Geschrieben 26. Februar 2009 Teilen Geschrieben 26. Februar 2009 schau dir doch Mal an was ein einzelnes XmlNode alles kann bzw. was ein XmlDocument so kann. Da findest du bestimmt einene eintrag wie delete oder remove ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.