Autor Beitrag
Xardas008
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
BeitragVerfasst: Fr 15.10.10 16:17 
Hi,

ich habe eine XML-Datei mit folgendem Aufbau:
ausblenden XML-Daten
1:
2:
3:
4:
5:
<jobs>
<beruf name="xy">
<auftrag></auftrag>
</beruf>
</jobs>


Jetzt habe ich folgendes Problem, solange ich nur einen Bereich für Beruf habe läuft mein Programm super, aber sobald ich mehr als einen habe nicht mehr.

Folgenden Code habe ich aktuell:
ausblenden volle Höhe 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:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
while (reader.ReadToFollowing("beruf"))
            {
                if (reader.NodeType == XmlNodeType.Element && reader.Name == "beruf")
                {
                    String attr = "";
                    jobs = null;
                    for (int i = 0; i < reader.AttributeCount; i++)
                    {
                        attr = reader.GetAttribute(i);
                    }
                    if (attr.Equals("Ruestungsschmied")){
                        jobs = new JobListRuestungsschmied();
                    }
                    if (attr.Equals("Alchemie"))
                    {
                        jobs = new JobListAlchemie();
                    }
                    if (attr.Equals("Waffenschied")){
                        jobs = new JobListWaffenschmied();
                    }
                    if(attr.Equals("Koch")){
                        jobs = new JobListKoch();
                    }
                    if (attr.Equals("Schneider")){
                        jobs = new JobListSchneider();
                    }
                    if (attr.Equals("Handwerk")){
                        jobs = new JobListHandwerk();
                    }

                    while (reader.ReadToFollowing("auftrag"))
                    {
                        Rezept rez = new Rezept();
                        if (reader.HasAttributes)
                        {
                            for (int i = 0; i < reader.AttributeCount; i++)
                            {
                                if (i == 0)
                                {
                                    lvl = Convert.ToInt32(reader.GetAttribute(i));
                                }
                            }
                        }
                        while(reader.ReadToDescendant("zutat")){
                            if(reader.HasAttributes){
                                for (int i = 0; i < reader.AttributeCount; i++)
                                {
                                    if (i == 0)
                                    {
                                        mats = material.getMaterial(reader.GetAttribute(i));
                                    }
                                    else
                                    {
                                        anz = Convert.ToInt32(reader.GetAttribute(i));
                                    }
                                }
                                rez.add(mats, anz);
                            }
                        }
                        jobs.Add(lvl, rez);

                    }
                }


Hat wer ne Idee, was ich falsch mache?
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 15.10.10 16:21 
Hallo,

ich habe mir deinen Code nicht weiter angeschaut. Ich gebe dir den Tipp für Xml-Dateien die kleiner als der "verfügbare" Hauptspeicher sind XDocument/XElement zu verwenden. Damit kannst du die Vorteile von Xml verwenden!

Gruß