Autor Beitrag
Emrichm2
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 15.11.17 13:52 
Hallo Leute,
ich hab ein Programm geschriebn um eine Xml Datei in einer vorgegeben Struktur einzulesen.
Ich habe aber ein Problem wenn ich aus der XML DAtei ein Kommentar z.B:: <!--Binärschwelle-->
einlesen möchte. Meine frage ist wie kann ich das einlesen eines Umlautes in mein Programm integrieren?

XML Datei:

ausblenden XML-Daten
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:
 <Root>
<!--Biärschwelle-->
    <bin_threshold>
        <quantil>15</quantil>
        <offset>97</offset>
    </bin_threshold>
    <min_area>0</min_area>
    <max_area>10</max_area>
    <min_border_dist>0</min_border_dist>
    <max_border_dist>0</max_border_dist>
    <max_defects_zone1>10</max_defects_zone1>
    <max_defects_zone2>0</max_defects_zone2>
    <first_axis_range>
        <min>177</min>
        <max>217</max>
    </first_axis_range>
    <second_axis_range>
        <min>82</min>
        <max>122</max>
    </second_axis_range>
    <!--AOI-->
    <aoi>
        <x>0</x>
        <y>0</y>
        <w>2600</w>
        <h>2200</h>
    </aoi>
</Root>


Mein C Sharp Programm mit Ausgabe:

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:
        private void button1_Click(object sender, EventArgs e)
        {
            ////Recipe.Text = ListBox.SelectedItem.ToString();
            //System.Globalization.CultureInfo oCultureInfoCurrent= Thread.CurrentThread.CurrentCulture;

            //// Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("de-DE");
            //Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo((int)ECultureTypes.German);

            XmlTextReader xmlReader = new XmlTextReader(@"C:\Users\emrichm2\Desktop\RecipeTest\845613N.xml");
            while (xmlReader.Read())
            {
                switch (xmlReader.NodeType)
                {
                    case XmlNodeType.Element:
                        Recipe.Items.Add("<" + xmlReader.Name + ">");
                        break;
                    //case XmlNodeType.Entit:
                    //    Recipe.Items.Add("<!--" + xmlReader.Name + "-->");
                    //    break;
                    case XmlNodeType.Text:
                        Recipe.Items.Add(xmlReader.Value);
                        break;
                    case XmlNodeType.EndElement:
                        Recipe.Items.Add("");
                        break;

                }
            }

Ich lese die xml datei aus einem Pfad in C sharp ein!

Moderiert von user profile iconChristian S.: XML-Tags hinzugefügt
Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mi 15.11.17 14:11 
Hallo Emrichm2,

als kleiner Hinweis: Es gibt C# und XML-Tags, mit denen Du den Code im Forum formatieren kannst.
Das findest Du beim Schreiben/Bearbeiten über der Text-Box neben "Bereiche" (ist vielleicht zugeklappt) als DropDown.
Das macht einiges einfacher ;)

Edit: Christian war schneller :)



Zum eigentlichen Problem:

Verstehe ich das richtig, dass Du irgendwelche Informationen aus den Kommentaren der Datei heraus filtern willst?
Das sollte nicht gemacht werden, denn die Kommentare haben prinzipiell den Sinn, dass sie eben nicht beachtet werden und man alles rein schreiben kann und darf.
Besser ist, wenn diese Informationen als eigenes Element oder Attribut geschrieben werden.
Oder - wenn die Kommentare zur Unterscheidung dienen - Du gibst den Elementen einen anderen Namen um sie voneinander zu unterscheiden.

Wenn es aber unbedingt sein muss:
Reading XML comments in C#


Übrigens:
Ich persönlich bin kein Fan von dem XmlReader.
Ich würde eher zu LINQ to XML empfehlen, das ist mMn. einfacher und strukturierter nutzbar.
Ein Muss ist das aber nicht, nur meine persönliche Meinung.
Wie man Kommentare mit LINQ to XML liest:
c# Reading XML comment using XDocument

Für diesen Beitrag haben gedankt: doublecross
Emrichm2 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 16.11.17 09:04 
Hallo Palladin007,

in der xml wie du siehst sind kommentare drin ich lese die xml ein
und mein programm meldet das es keine umnlaute wie ä lesen kann wie kann ich so etwas lösen?
ansonsten funktioniert das programm ganz gut nur wenn ich umlaute hab funktioniert es nicht?

Vieel Grüße!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 16.11.17 10:39 
Hallo,

erhältst du eine Fehlermeldung (Exception)?
Das Stichwort generell dafür lautet: Encoding, s. z.B. How to change character encoding of XmlReader.

Ich nehme mal an, die XML-Datei ist als UTF-8 abgespeichert, also verwende Encoding.UTF8.
Verwende dafür dann XmlReader.Create:
ausblenden C#-Quelltext
1:
2:
3:
using (XmlReader xmlReader = XmlReader.Create(new StreamReader(filename, Encoding.UTF8)))
{
}


Zuletzt bearbeitet von Th69 am Do 16.11.17 11:44, insgesamt 1-mal bearbeitet
Emrichm2 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 16.11.17 10:57 
Hallo,
ja die exception siehe anhang.
genau an der stelle xo das ä in binärschwelle ist tritt die
exception auf.
Einloggen, um Attachments anzusehen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 16.11.17 11:26 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Emrichm2 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 16.11.17 11:33 
Super ich probiere es gleich aus

Vielen Dank!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 16.11.17 11:52 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Emrichm2 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 16.11.17 11:57 
Hallo Frühlingsroll und alle;

echt super es funktioniert ihr habt mir den tag gerettet.

Vielen,Vielen Dank!!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 16.11.17 12:08 
- Nachträglich durch die Entwickler-Ecke gelöscht -