Entwickler-Ecke
WinForms - Wörter in xml. Datei mit Windows Forms ersetzen
Gooner - Di 29.06.10 16:02
Titel: Wörter in xml. Datei mit Windows Forms ersetzen
Hallo zusammen,
Und zwar habe ich eine xml. Datei, in der die Wörter Spielera01-Spielera18 und
Spielerb01-Spielerb18 jeweils ein paar hundert mal so drin stehen.
Ich würde nun gerne in der GUI mit Hilfe von Textfeldern diese Wörter durch die
wirklichen Namen ersetzen.
Am liebsten wäre es mir, die Namen mit Hilfe einer Checkbox bei gesetztem Haken
zu überschreiben. Nach dem Überschreiben aller Namen würde ich das "neue" xml. File
z.B. mit einem Button so abspeichern.
Hätte vielleicht jemand einen Tipp, wie ich das am besten realisieren könnte und
ist das so überhaupt möglich?
Vielen Dank im Voraus!
Gooner
danielf - Di 29.06.10 16:58
Hallo,
um Xml Dokumente in .NET verarbeiten zu können gibt es die Klasse XDocument. Für genauere Hinweise bräuchte man die genau Strukutr der Xml.
Generell kannst du natürlich zum Beispiel Links ein ListBox machen in der alle Spieler aufgelistet werden und bei auswählen Rechts eine Textbox anzeigen wo du die Werte ändern kannst.
Das wäre ein recht primitive Oberfläche. Dementsprechend könnte man das Xml wahrscheinlich gleich auch im Editor editieren :D Deshalb ist die letztendliche Umsetzung wohl stark von den Ansprüchen und Verwendungszweck abhängig - von denen wir sofar nichts wissen.
Gruß
Christian S. - Di 29.06.10 17:05
Crossposts sind bei uns erlaubt, auf den jeweils anderen Thread zu verweisen wird jedoch erwartet ;-)
Gooner - Di 29.06.10 18:27
danielf hat folgendes geschrieben : |
Hallo,
um Xml Dokumente in .NET verarbeiten zu können gibt es die Klasse XDocument. Für genauere Hinweise bräuchte man die genau Strukutr der Xml.
Generell kannst du natürlich zum Beispiel Links ein ListBox machen in der alle Spieler aufgelistet werden und bei auswählen Rechts eine Textbox anzeigen wo du die Werte ändern kannst.
Das wäre ein recht primitive Oberfläche. Dementsprechend könnte man das Xml wahrscheinlich gleich auch im Editor editieren :D Deshalb ist die letztendliche Umsetzung wohl stark von den Ansprüchen und Verwendungszweck abhängig - von denen wir sofar nichts wissen.
Gruß |
Hallo Daniel,
die Struktur sieht so aus:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| <grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="de-DE" version="1.0"> <rule id="thema" scope="public"> <one-of> <item>Spielera01</item>
</one-of> </rule> </grammar> |
Wie müsste ich denn vorgehen, wenn ich jetzt - Spielera01 - z.B. durch Schmidt
ersetzen will?
Der Vorschlag von Dir wäre in der Tat eher "einfach", würde mir aber erstmal ausreichen..
Liebe Grüße und Danke!
Gooner
Moderiert von
Christian S.: XML-Tags hinzugefügt
danielf - Di 29.06.10 19:04
Zuerst muss man das Dokument einlesen (komplett in Speicher, sollte das Dokument viel zu groß sein muss man sich gedanken über SAX machen).
C#-Quelltext
1:
| XDocument doc = XDocument.Load("filename.xml"); |
Mit der XPath-Extension-Methoden kannst du ein beliebiges Xml-Element auswählen:
C#-Quelltext
1: 2: 3:
| XElement spielera01 = document.XPathSelectElement("//item[text()='Spielera01']");
spielera01.Value = "Mesut Özil"; |
das wars...
Gruß
Gooner - Mi 30.06.10 10:28
Hallo Daniel,
wenn ich das ganze jetzt so..
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void button2_Click(object sender, EventArgs e) { XDocument doc = XDocument.Load("Default_18_Kader.xml"); XElement spielera01 = doc.XPathSelectElement("//item[text()='Spielera01']"); spielera01.Value = ("Mesut Özil"); } |
..probiere, bekomme ich eine NullReferenceException mit der Meldung, dass
der Objektverweis nicht auf eine Objektinstanz festgelegt wurde.
Hast Du eine Idee, wie ich das am besten gelöst bekomme?
Gruß
Gooner
Moderiert von
Christian S.: C#-Tags hinzugefügt
danielf - Mi 30.06.10 10:35
Das liegt daran, dass der XPath-Ausdruck kein Element zurück gibt.
Deine Struktur ist wohl doch anders, am besten du fügst die XML hier mal rein (und nicht das Schema).
und bitte denke an die [cs ]-Tags für C#-Code und [ xml] für Xml.
Gruß
Gooner - Mi 30.06.10 10:57
Hallo Daniel,
Die xml. Datei besteht nur aus:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| <grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="de-DE" version="1.0"> <rule id="thema" scope="public"> <one-of>
<item>Kopf spielera01 spielerb01</item> <item>Kopf spielerb01 spielera01</item> <item>Boden spielera01 spielerb01</item> <item>Boden spielerb01 spielera01</item>
</one-of> </rule> </grammar> |
Und noch ungefähr 2500 anderen items aber die wollte ich jetzt hier nicht reinkopieren :-)
Könnte Dir die ganze xml.Datei auch per Mail zukommen lassen oder so, wie Du willst..
Vielen Dank!
Gruß
Gooner
danielf - Mi 30.06.10 11:03
Letztes mal sah deine Datei noch <item>Spielera01</item> so aus. Deshalb funktioniert der XPath-Ausdruck nicht.
Die Struktur der Xml ist total unsinnig. Wenn du nichts daran ändern kannst, würde ich vorschlagen du machst erst eine Transformation. Ansonsten gleich richtig machen.
Ansonsten schau dir XPath genauer an, bzw. überleg dir was du wirklich willst, bzw. an welchem Kriterium du nun das item auswählen willst.
So ist das Ganze aber total unlogisch, unschön bis unmöglich.
Gooner - Mi 30.06.10 11:22
Ich habe Dir mal eine pn geschickt, hoffe das ist ok..
Gruß
Gooner
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!