2010-12-05 25 views
0

Ich bin Parsen einige xml Einträge die XmlTextReader verwenden und auf der Suche für die Elemente, die ich durch die Verwendung unterschiedlicher textreaders für jede in einer anderen Schleife müssen Sie wie folgt vor:XML-Parsing XmlTextReader mit

Dim treader As XmlTextReader = New XmlTextReader(New StringReader(item.ToString)) 
       While treader.Read 
        If treader.Name = "summary" Then 
         content = treader.ReadElementContentAsString 
         If String.IsNullOrEmpty(content) Then 
          content = "NOTHING" 
          Continue While 
         End If 
         contentList.Add(content) 
         Exit While 

        End If 
       End While 

und ich tun das gleiche für jede Element, nach dem ich suche. Jetzt entsteht das Problem, wenn ich die Ergebnisse für jeden bekomme. Ich benutze eine Arraylist für jedes Element und manchmal habe ich einen ungleichen Betrag wie 100 für die Zusammenfassung, 100 für den Titel, 99 für die ID etc ... gibt es eine effizientere Möglichkeit, dies zu tun, indem Sie den Eintrag überprüfen, wenn alle Knoten sind da und dann einfach überspringen, wenn es nicht ist.

<entry> 
<summary> 
<id> 
<published> 
<uri> 
<rule> 
</entry> 

Antwort

1

Ich würde ein Eintrag Objekt und deserialize das XML als Liste der Eintrag Objekte. Das würde die Tür zu Linq und für jede Schleife öffnen. Schauen Sie sich die XmlSerializer Class an. Ich hoffe, dass Ihre Daten keine 99 IDs und 100 andere Felder enthalten.

+0

danke für deine antwort, werde es versuchen. Der Unterschied in den Zählungen ist eher auf einen Leserfehler in einer der while-Schleifen zurückzuführen und überspringt dann die anderen. Wenn ein Problem mit dem Eintrag festgestellt wird, füge ich das zu einer separaten Liste hinzu. – vbNewbie

Verwandte Themen