Benutzer mit den meisten Antworten
XML und LINQ

Frage
-
Hallo zusammen,
ich versuche gerade die von einem externen Programm gelieferten XML-Dateien auszulesen bzw zu verarbeiten, nur bin ich mit XML dann doch ein blutiger Anfänger.
Nach vielem lesen habe ich mich LINQ festgelegt, dies scheint mir die effektivste Methode zu sein um Daten recht einfach lesen zu können, so dachte ich zumindest...
Erst mal meine Beispiel-Datei:
<?xml version="1.0" ?> <!-- Test XML --> <Root> <element Attribut1="1" Attribut2="2" Attribut3="3" Attribut4="2011-11-12 00:00:00"> <subelement> <subelement1></subelement1> <subelement2>Sub2</subelement2> <subelement3 Attribut1="1" Attribut2="2"></subelement3> </subelement> </element> </Root>
Die obige Datei habe ich in ein XDocument geladen und wollte dann z.Bsp. das Attribut1 aus <Root><element> auslesen:Was ich schon mal feststellen konnte, ist das gesuchte Element nicht da bzw wird bei der Abfrage das Element falsch benannt, bekomme ich ein Fehler "Object reference not set to an instance of an object".
Dim arrElements As IEnumerable(Of XElement) = From Element As XElement In XDocElement...<Root>.<element> If arrEngagement.Count > 0 Then strAttrib1 = arrElements(0).@<Attribut1>.ToString End If
Bin gerade etwas gefrustet, vermutlich denke ich um die Ecke etc.
Was ich noch nicht getestet habe, in manchen Dateien kann ein Element mehrfach vorkommen, daher war mir LINQ sehr sympathisch wegen IEnumerable..., aber irgendwie habe ich das nicht durchschaut :-(
Bin ich auf dem richtigen Weg bzw gibt es einen eleganteren Weg?
Wäre Euch dankbar für Eure Hilfe...
Viele Grüsse,
Maximilian
Antworten
-
Mach es mal so:Dim arrElements As IEnumerable(Of XElement) = From Element As XElement In XDocElement...<element>--
Viele Gruesse
Peter- Als Antwort markiert Thorsten Dörfler Sonntag, 13. November 2011 11:27
Alle Antworten
-
Mach es mal so:Dim arrElements As IEnumerable(Of XElement) = From Element As XElement In XDocElement...<element>--
Viele Gruesse
Peter- Als Antwort markiert Thorsten Dörfler Sonntag, 13. November 2011 11:27
-
Hallo Peter,
das heisst ich muss nicht direkt ab dem Root anfangen? Auch nicht schlecht :-)
Aber ein Problem bleibt, wenn ich zum Beispiel anstatt <element> nach <elements> suche (also einfach ein TAG den es nicht gibt), bekomme ich den Fehler "Object reference not set to an instance of an object". Es kann ja mal vorkommen das ein TAG in der XML-Datei nicht enthalten ist, und hier würde ich lieber ein nothing bekommen. Das ganze per Try... Block abzuhandeln geht auch, ist aber dann eher nicht die feine Art.
Wie kann ich im Programm besser auf nicht vorhandene TAG's reagieren als mit dem abfangen einer Exeption?
Oder verstehe ich gerade etwas nicht?
Gruss,
Maximilian