LINQ zu XML in VB.NET

8

Ich bin LINQ im Grunde brandneu. Ich habe mich hier viel umgesehen und bin ziemlich verwirrt. Ich habe einige Beispiele gesehen, die es mir erlauben, Objekte mit LINQ stark zu typisieren, aber ich verstehe sie nicht wirklich, weil sie in C # sind. Ich denke, Sie können mit LINQ verschiedene Dinge tun (denke ich?).

Wie auch immer, das ist was ich versuche zu tun:

%Vor%

BEARBEITEN - Ich möchte nur eine Liste aller Produkte aus dem XML-Dokument abrufen und sie in eine Generics-Liste einfügen.

    
Jason 30.06.2009, 21:37
quelle

4 Antworten

11

Marc hat Recht, mit VB kannst du viele nette Sachen machen. Ich bin selbst ein C # -Team, aber ich habe gerade eine VB-Lösung gefunden, um zu sehen, wie es für Sie funktioniert. Ich habe den folgenden Code veröffentlicht und die wichtigsten Teile erläutert. Ich war sehr beeindruckt von den Funktionen von VB für Xml!

Ich sehe in Ihrem Codebeispiel, dass Sie Ihr Xml bereits in ein XDocument geladen haben. Sobald Sie Ihr XDocument.Load fertiggestellt haben, können Sie mit einer speziellen Syntax auf das Xml-Dokument zugreifen.

Für den Anfang möchten wir alle Produkte aus dem Dokument erhalten; d.h. alle & lt; Produkt & gt; Elemente. Wir müssen Folgendes tun:

%Vor%

Dies besagt, dass Sie alle & lt; Produkt & gt; Elemente aus dem Dokument. Dies gibt uns eine IEnumerable-Sammlung von XElements.

Sobald wir ein einzelnes Produkt aus der Kollektion gezogen haben, möchten wir auf die Produktwerte wie Name oder Preis zugreifen. Dazu müssen wir Folgendes tun:

%Vor%

Hier ist ein vollständiges Beispiel zusammen mit der erwarteten Ausgabe, auf die Sie schauen können:

%Vor%

Programmausgabe ist:

%Vor%

Ich hoffe, das war hilfreich. Wenn Sie weitere Informationen wünschen, fragen Sie einfach: -)

Es ist schwer, vor dem Schlafengehen etwas Kohärentes zu schreiben! : -)

    
Doctor Jones 30.06.2009, 22:30
quelle
2

Doktor Jones hat ein exzellentes Beispiel geschrieben!

Um eine Sammlung von benannten Typobjekten im Gegensatz zu anonymen Typobjekten (beide sind stark typisiert) zu erhalten, tun Sie dies:

%Vor%     
CoderDennis 30.10.2009 14:27
quelle
0

OK, wie wäre es damit?

%Vor%     
Robert Harvey 01.08.2014 15:54
quelle
0

Ich bin vielleicht ein wenig zu spät zur Party hier, aber ich kann nicht glauben, dass niemand die Option XmlSerializer angeboten hat:

%Vor%

Sie können dann ein iEnumerable des Produkts von der gemeinsamen Funktion zurückgeben:

%Vor%

Dies verwendet LinqToXml nicht als solches, aber es deserialisiert das XML zu einem iEnumerable des Produkts, das Sie wie gewohnt mit Linq verwenden können.

    
Nick Dewitt 11.01.2016 14:54
quelle

Tags und Links