Autor |
Beitrag |
Gooner
Hält's aus hier
Beiträge: 13
|
Verfasst: Di 29.06.10 16:02
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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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  Deshalb ist die letztendliche Umsetzung wohl stark von den Ansprüchen und Verwendungszweck abhängig - von denen wir sofar nichts wissen.
Gruß
|
|
gfoidl
      
Beiträge: 157
Erhaltene Danke: 19
Win XP
C#, Fortran 95 - Visual Studio
|
Verfasst: Di 29.06.10 17:03
Hallo,
siehe auch Wörter in xml. Datei mit Windows Forms ersetzen.
Bitte keine Crossposts.
mfG Gü
_________________ Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 29.06.10 17:05
Crossposts sind bei uns erlaubt, auf den jeweils anderen Thread zu verweisen wird jedoch erwartet 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Gooner 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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 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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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 
Hält's aus hier
Beiträge: 13
|
Verfasst: Mi 30.06.10 11:22
Ich habe Dir mal eine pn geschickt, hoffe das ist ok..
Gruß
Gooner
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 30.06.10 18:05
|
|