[C#]XML leeres Element(Text) lesen?


Fansoftware

Grünschnabel
Habe das kleine Problem, dass wenn ich von allen Elementen den Text auslesen will, das Programm von mir dann einfach das nächste Element liest, wo auch Text enthalten ist.
Der Xml Code:
Code:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="XLS Stylesheet" type="text/xsl" media="all"?>
<rss version="2.0">
<channel>
<generator>RSS Feeds Maker - www.iniusdev</generator>
<pubDate>07.06.2008  18:34</pubDate>
<title></title>
<description>dddd</description>
<link></link>
<copyright></copyright>
<managingEditor></managingEditor>
<category domain=""></category>
<docs></docs>
<ttl></ttl>
<language></language>
<webMaster></webMaster>
</channel>
</rss>

Der Code abschnitt:
Code:
while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element:
                        if ( reader.Name  ==  channel[n] )
                        {
                            knoten = true;
                            if (reader.Name == "category")
                            {
                                reader.MoveToNextAttribute();

                                channel[11] = reader.Value;
                            }
                        }
                        if (  reader.Name  == "item")
                        {
                            item = true;

                        }
                        if (item == true)
                        {
                            if (reader.Name == "source")
                            {
                                reader.MoveToNextAttribute();// Attribute lesen.
                                items[8] = reader.Value;

                            }
                            if (reader.Name == "category")
                            {
                                reader.MoveToNextAttribute();

                                    items[9] = reader.Value;
                            }
                            if (reader.Name == "enclosure")
                            {
                                reader.MoveToNextAttribute();

                                items[10] = reader.Value;
                            }
                        }
                        break;
                    case XmlNodeType.Text:
                            if (knoten == true)
                            {
                                channel[n] = reader.Value;
                                n = n + 1;
                                knoten = false;
                            }
                            if (item == true)
                            {
                                items[l] = reader.Value;
                                l = l + 1;
                            }
                        break;
                    case XmlNodeType.EndElement:
                        if ( reader.Name  == "item")
                        {
                            item = false;
                            saveinfeeds();
                            p = p + 1;
                            l = 0;
                        }
                        if (knoten == true)
                        {
                            channel[n] = "";
                            n = n + 1;
                            knoten = false;
                        }
                        break;
                }

            }

Lösung:Die bool Variable "knoten" ist ja immer noch true, da der switch bei einem leeren Element, nicht im case Text sondern dann im case EndElemnt springt, trifft das ein habe n+1 gesetzt ,knoten false und im aktuellen channel array index einfach einen leer Eintrag machen lassen. Dannach funktioniert das Programm so wie es sollte.
Das Problem war mal wieder ganz einfach, aber manchmal will man einfach nicht drauf kommen.:)
 
Zuletzt bearbeitet:

Forum-Statistiken

Themen
272.363
Beiträge
1.558.642
Mitglieder
187.837
Neuestes Mitglied
Kalle P