Entwickler-Ecke
IO, XML und Registry - Wie lese ich so ein XML-Format?
jasocul - Mi 01.02.12 14:56
Titel: Wie lese ich so ein XML-Format?
Mir liegt folgende XML-Datei vor (nur ein kleiner für mich relevanter Ausschnitt):
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8:
| <?xml version="1.0" encoding="utf-8" ?> <configuration> <param key="Port" value="COM9" /> <param key="Speed" value="38400" /> <param key="Block" value="1000" /> <param key="Handshake" value="NONE" /> <param key="Timeout" value="30000" /> </configuration> |
Ich habe schon fleißig Tante Google genutzt, komme aber nicht dahinter, wie ich die Daten lesen kann. Die Datei ist noch viel umfangreicher und hat daher noch eine Menge anderer Infos. Ich könnte natürlich einfach alles als Text-Datei einlesen und selber parsen, aber ich gehe mal davon aus, dass dieses Format irgendwie definiert ist und ich mir die Arbeit erleichtern kann.
Kann bitte Jemand mal einen XML-Dummy (als mir :oops: ) den richtigen Denk-Anstoß geben?
Crosspost:
mycsharp [
http://www.mycsharp.de/wbb2/thread.php?threadid=101358]
Th69 - Mi 01.02.12 15:35
Hallo,
generell wäre
XmlSerialisierung [
http://www.c-sharp-library.de/topic_64947.html] das richtige Stichwort dafür.
Wenn du nur einen kleinen Teil daraus lesen willst, dann benutze entweder den XmlReader oder aber XDocument und navigiere dich zu dem entsprechenden Eintrag (z.B. "configuration").
P.S: bei myCSharp.de sind Crossposts nicht erlaubt - also nicht wundern, wenn der Beitrag bald geschlossen wird ;-)
jasocul - Mi 01.02.12 16:01
Ist da schon geschlossen. Wegen des Crossposts und weil es als Anfängerfrage eingestuft wurde.
Ich kannte XML bisher nur mit "richtigen" Tags. Da unterliege ich wohl einen Irrtum.
Daher bin ich auch davon ausgegangen, dass es hier um eine spezielle Variante geht.
Dann werde ich das wohl über den XmlReader angehen.
EDIT:
War wirklich nur Kleinkram.
Mit Aufbereitung für meine Bedürfnisse nicht mehr als 20 Zeilen Code.
Kha - Mi 01.02.12 18:30
jasocul hat folgendes geschrieben : |
Ich kannte XML bisher nur mit "richtigen" Tags. |
Was genau meinst du, die selbstschließenden Tags? Das ist jedenfalls wohlgeformtes XML.
Und mit XmlReader hast du dich unter den drei vorgeschlagenen Methoden eindeutig für die aufwendigste entschieden ;) .
jasocul - Do 02.02.12 09:09
Kha hat folgendes geschrieben : |
Was genau meinst du, die selbstschließenden Tags? Das ist jedenfalls wohlgeformtes XML. |
<Tag>Irgendwas</Tag>
So kannte ich es bisher nur. Wie oben schon erwähnt, bin ich nicht sonderlich geübt im Umgang mit XML-Formaten. :lol:
Kha hat folgendes geschrieben : |
Und mit XmlReader hast du dich unter den drei vorgeschlagenen Methoden eindeutig für die aufwendigste entschieden ;) . |
Echt :?:
Ich fand das schon ziemlich einfach. Hier mal mein Code-Schnipsel, den ich beim experimentieren gebastelt habe:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| dlgOpen.ShowDialog(); string contents = ""; XmlReaderSettings settings = new XmlReaderSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; settings.IgnoreWhitespace = true; settings.IgnoreComments = true; XmlReader reader = XmlReader.Create(dlgOpen.FileName, settings);
reader.ReadStartElement("configuration");
do { switch (reader[0]) { case "DirectPort" : case "DirectSpeed": case "DirectBlock": case "DirectHandshake": case "DirectTimeout": { contents += reader[0] + " = " + reader[1] + "\r\n"; break; } }
} while (reader.ReadToNextSibling("param"));
tbxProtokoll.Text = contents; } |
Ist natürlich nur rudimentär und ohne irgendwelche Sicherheitsprüfung. :wink: Das wird in der endgültigen Lösung natürlich nicht so bleiben. Ich komme vermutlich erst nächste Woche wieder dazu, mich mit dem Problem zu beschäftigen. Dann kann ich mir auch noch mal die Ansätze mit Serialisierung und XDocument ansehen.
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!