Autor Beitrag
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 01.02.12 14:56 
Mir liegt folgende XML-Datei vor (nur ein kleiner für mich relevanter Ausschnitt):
ausblenden 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
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 01.02.12 15:35 
Hallo,

generell wäre XmlSerialisierung 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 ;-)

Für diesen Beitrag haben gedankt: jasocul
vagtler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 96
Erhaltene Danke: 24


Delphi 2010, C# (VS 2012), Objective-C, Java
BeitragVerfasst: Mi 01.02.12 15:57 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
[...] also nicht wundern, wenn der Beitrag bald geschlossen wird ;-)

Eher wohl weil das sowas von grundlegend ist. Aber sowas von.

www.google.com/search?q=c%23+read+xml

Für diesen Beitrag haben gedankt: jasocul
jasocul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 01.02.12 18:30 
user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 02.02.12 09:09 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
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:
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
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:

ausblenden 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.